STM32F103 使用HSI配置系统时钟为64MHZ
2016-11-11 16:57
423 查看
/** * @brief Sets System clock frequency to 64MHz and configure HCLK, PCLK2 * and PCLK1 prescalers. * @note OCS is HSI. This function should be used only after reset. * @param None * @retval None */ void SetSysClockTo64Mhz(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; RCC_DeInit(); /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* Enable HSI */ RCC->CR |= ((uint32_t)RCC_CR_HSION); /* Wait till HSI is ready and if Time out is reached exit */ do { HSEStatus = RCC->CR & RCC_CR_HSIRDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC->CR & RCC_CR_HSIRDY) != RESET) { HSEStatus = (uint32_t)0x01; } else { HSEStatus = (uint32_t)0x00; } if (HSEStatus == (uint32_t)0x01) { /* Enable Prefetch Buffer */ FLASH->ACR |= FLASH_ACR_PRFTBE; /* Flash 2 wait state */ FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; /* HCLK = SYSCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; /* PCLK1 = HCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; /* PLL configuration: PLLCLK = HSI/2 * 16 = 64 MHz */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2| RCC_CFGR_PLLMULL16); /* Enable PLL */ RCC->CR |= RCC_CR_PLLON; /* Wait till PLL is ready */ while((RCC->CR & RCC_CR_PLLRDY) == 0) { } /* Select PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; /* Wait till PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) { } } else { /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ } }
相关文章推荐
- STM32F30X时钟初始化为HSI 64Mhz,并使用PLLCLK作为系统时钟
- STM32系统学习——RCC(使用HSE/HSI配置时钟)
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
- 按照S5PV210的官方手册使用C语言配置系统时钟--实例分析
- STM32F103系统时钟配置
- RCC—使用 HSE/HSI 配置时钟 ---时钟树
- 学习下stm32 配置 HSI作为系统时钟,但意义不大,一般不这样做!
- STM32F103时钟系统:系统时钟配置为56M,有哪些配置方法
- 【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
- stm32变更外部晶振时如何配置时钟、以及HSI的使用
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
- 使用 XForms 和 Ruby on Rails 开发小型门诊管理系统,第 1 部分: 安装配置 IBM DB2 9 pureXML
- 使用busybox-1.9.2制作根文件系统 (转,可以用来参考配置busybox)
- 使用Log4j在系统中配置两个不同的Log输出
- 一个简单的系统配置文件使用DTD和XSD两种方式描述
- 安装配置并使用Net-SNMP监测solaris系统资源状况
- 不常用的系统配置使用工具(msconfig)
- Linux系统环境VNC服务安装、配置与使用
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 s
- 使用sendmail配置企业简易邮件系统