怎样将STM32F4的外接晶振从8MHz改为25MHz而不改变系统时钟
当我们更改STM32的外部输入时钟晶振的频率时,程序里面应该怎样进行相应的修改??
现在以正点原子的开发板和程序为例,进行讲解。
正点原子的开发板外部晶振接入为8MHz,怎样将其修改为25MHz?
由图1可知,当系统时钟来源为HSE时,系统时钟计算公式为:
f_sysclk=((f_hse/M) * N)/P=(f_hse * N)/(M * P)
以STM32F407为例,系统运行时钟为168MHz。
系统接入晶振8MHz时: f_sysclk=(8MHz * 336)/(8 * 2)=168MHz
系统接入晶振25MHz后要想系统时钟不变,最简便的办法将
#define PLL_M 8 改为 #define PLL_M 25
则系统时钟为: f_sysclk=(25MHz * 336)/(25 * 2)=168MHz
在代码中修改时与修改系统时钟相关的文件有:stm32f4xx.h 和 system_stm32f4xx.
修改步骤:
1. 在stm32f4xx.h需要根据芯片选型将图2中标注部分8000000改为图3中的25000000。
2. 在system_stm32f4xx.c需要将图4中标注部分的PLL_M 从8改为图5中的25。
注: 当芯片换为STM32F429xx等其他芯片时,系统时钟的修改也可按照这样的步骤操作。