STM32F30X时钟初始化为HSI 64Mhz,并使用PLLCLK作为系统时钟
2014-10-29 11:50
417 查看
void SYSCLK_Config_HSI_64Mhz(void) { __IO uint32_t StartUpCounter = 0, HSIStatus = 0; /* 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 { HSIStatus = RCC->CR & RCC_CR_HSIRDY; StartUpCounter++; } while((HSIStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC->CR & RCC_CR_HSIRDY) != RESET) { HSIStatus = (uint32_t)0x01; } else { HSIStatus = (uint32_t)0x00; } if (HSIStatus == (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_1; /* 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; /* Clear PLL Source [16] and Multiplier [21:18] bits */ RCC->CFGR &= ~(RCC_CFGR_PLLMULL | RCC_CFGR_PLLSRC); /* PLL configuration: PLLCLK = HSI / 2 * 16 = 64 MHz */ 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 */ } }
来自:http://blog.csdn.net/lan120576664?viewmode=contents
相关文章推荐
- STM32F103 使用HSI配置系统时钟为64MHZ
- STM32系统学习——RCC(使用HSE/HSI配置时钟)
- 学习下stm32 配置 HSI作为系统时钟,但意义不大,一般不这样做!
- Android中使用系统桌面背景作为应用背景,支持拖动
- 强烈推荐使用 Hessian/Burlap 作为J2EE分布式系统内部 的 远程服务方案
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- 在 Java 服务端使用 syslog 作为日志系统
- SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ol
- LiMo平台使用EFL作为 GUI系统!
- linux 系统下使用C程序实现时钟的函数
- SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur
- greenplum使用gpinitsystem初始化系统需要的配置文件
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- 使用Initramfs或yaffs2作为根文件系统启动成功,但是Ramdisk作为根文件系统有问题
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 s
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- (转载addone)完全使用Linux作为桌面系统 —— 使用Linux两年记 --软件列表
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 s
- VirtualBox: 如何复制已安装好系统的VDI文件作为新的Guest系统磁盘使用?