STM32系统时钟配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32系统时钟配置
STM32 在使用不同时钟晶振时,需要对系统时钟进行配置。
下面以16MHz晶振产生72MHz时钟为例进行说明。
由于STM32可进行整数倍倍频,及可选是否2分频。
因而选用16MHz 晶振时,先2分频,再倍频9倍,即可倍频为72MHz。
①查找SystemInit() 函数,即系统时钟设置:
图1
②进入 SetSysClockTo72() 函数,如果要设置其他频率,进入对应的频率即可,如SetSysClockTo48()。
③参考 STM32中文参考手册的6.3.2时钟配置寄存器(RCC_CFGR)。
如“位17PLLXTPRE ” 所述:
HSE分频器作为PLL输入(HSE divider for PLL entry)
由软件置’1’或清’0’来分频HSE后作为PLL输入时钟。
只能在关闭PLL时
才能写入此位。
0:HSE不分频
1:HSE 2分频
因而,RCC_CFGR 寄存器的位17 应置“1”。
④如图2红色框中所示,
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9|RCC_CFGR_PLLXTPRE);
添加红色字部分即可完成2分频,则可将16MHz的时钟分频为
8MHz。
其实,查找RCC_CFGR_PLLXTPRE宏定义可知:
#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000)
实际上就是将位 17置1。
而RCC_CFGR_PLLMULL9中的9即是倍频倍数。
(8*9=72 MHz)
图2
⑤如图3所示,全局查找72000000(按住Ctrl+Shift+F,输入72000000),找到SYSCLK_FREQ_72MHz 的宏定义,将其注释取消。
图3
即可完成16MHz至72MHz时钟配置。
(钟银彪 2016.3.23)。