stm32系统时钟配置,标准库v3.5
新芯片配置第一个工作就是要保证系统时钟是对的
1.虽然SystemInit()会在main之前被执行,但我们可以手动调用此函数,以利于我们跟踪时钟是否配置正确。此函数位于
2.SystemInit()下找到SetSysClock();
3.可以看到有很多个宏,如果你没去掉注释是跟踪不过去的,只能一个一个试,比如跟踪到SYSCLK_FREQ_72MHz,但你的系统时钟最高只能是36MHz,那就要如下修改,注释SYSCLK_FREQ_72MHz,去掉SYSCLK_FREQ_36MHz的注释
4.在主函数调用RCC_GetClocksFreq(&RCC_ClocksFreq);在此函数后打断点,观察Watch1窗口的数值是否是36MHz,如果是则OK。
5.如换算成10进制还不是36MHz,则继续跟踪SetSysClock()->SetSysClockTo36(),发现函数里面有针对PLL倍频和分频设置,根据芯片型号选择更改,CL 或者其他,库函数有个缺点就是CL型号的芯片默认外部晶振是25M,其他型号是8M,当我们接12M时就要更改此文件了。
首先要在stm32f10x.h把HSE_VALUE改成实际晶振值,再在system_stm32f10x.c下计算PLL分频,配置好参数让它计算到36M。再按照步骤4查看是否对了。
6.目标结果
经过上图修改,12M / 2 * 6 = 36M,可以看到下图SYSCLK_Frequency是0x02255100,即36000000,修改OK