STM32 晶振 系统时钟8MHZ和72Mhz的原因
首先问题描述:
1、自己画的板子和淘宝买的最小系统板 系统时钟不一致,自己画的是8Mhz,HSE失败;最小系统板72Mhz
2、最小系统板在程序1运行仿真的时候,查看peripherals->Power,Reset and Clock Control(PRCC)是72MHZ,在程序2仿真的时候是8Mhz,程序SystemInit()所在的文件一模一样;
3、出现过8M晶振坏了,更换晶振后时钟源正常72Mhz
问题1原因:
1、注意晶振的匹配电容的值,测试版发现系统时钟有问题时,可以是晶振不起振,匹配电容的值不对会导致晶振不起振;
2、STM32f103 内部HSI为8Mhz,当外部时钟HSE启动失败,则system_stm32f10x.c配置系统时钟为8Mhz,时钟源为内部时钟HSI
3、STM32f10x的启动文件会在main之前调用SystemInit(),初始化时钟,
Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
问题2原因:.....还是没找到原因 之前以为是启动文件的问题 PRCC显示8Mhz的启动文件用的都是md 不是_hd的,与配置里的hd不符。 使用最小系统板目前PRCC显示8Mhz的程序是 test_led+gpio +uart123+timer_clk 和test_led+gpio+touchboardIIC+exti,正常显示72Mhz的程序是Smart_Power1021和test_ic_gsm_rly_8MHZ_netcheck _不等待AT响应;
8mhz调用RCC_GetSYSCLKSource() 返回值显示0x08: PLL used as system clock
PLL used as system clock