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

原文地址:https://www.cnblogs.com/fyp7077/p/8302772.html