STM32选择4M外部晶振配置方法
STM32选择4M外部晶振配置方法
一、概述
STM32库函数默认外部晶振为8M,如果想要根据不同的外部晶振配置时钟频率可以通过修改库函数来实现,下面以外部晶振为4M,配置系统时钟为24M为例。
二、STM32(以STM32F10x系列为例)
1. stm32f10x.h头文件内修改外部晶振HSI_VALUE的值
默认为8000000(8M)
这里修改为4000000(4M)
2. system_stm32f10x.c文件内修改宏定义默认72MHz
这里修改为24MHz
3. system_stm32f10x.c文件内SetSysClockToxx(xx是设置的系统时钟值,例如24)函数修改PLLXTPRE,HSE分频器作为PLL输入的分频值(不分频或者2分频)和PLLMUL,锁相环PLL倍频系数。
默认设置72MHz的函数
选择24M的宏定义后会改成设置24MHz的函数
原本默认外部晶振HSE:8M,所以PLLXTPRE选择2分频,PLLMUL倍频系数选择6
系统时钟 = (8/2) * 6 = 24MHz
现在外部晶振HSE:4M,所以PLLXTPRE选择不分频,PLLMUL倍频系数选择6
系统时钟 = 4 * 6 = 24MHz
三、系统时钟验证
添加stm32f10x_rcc.h 头文件,定义一个RCC_ClocksTypeDef结构体类型变量,
在主函数中调用RCC_GetClocksFreq()函数即可查看系统时钟。
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
RCC_ClocksTypeDef get_rcc_clock;
int main(void)
{
RCC_GetClocksFreq(&get_rcc_clock);
while (1)
{
}
}
调试结果显示系统时钟为24MHz。
注意:如果使用的是STM32的库函数,实际用的是GD32芯片,则还需要修改HSE启动超时的时间,因为ST和GD芯片HSE启动超时的时间不同。
ST的参数
GD的参数
参考资料:
STM32F103 与 GD32F103 差异_gd32f103 stm32f103-CSDN博客
作者:想要起飞蜗牛