一,时钟源的选择
1.1认识时钟源
在F1系列中 时钟源分为内部、外部的高速,低速时钟,其中外部时钟内板上晶振外设,内部时钟为片上外设。每个时钟也有自己独特的用途,通常都是用外部8mhz,通过倍频到系统72mhz。如下图所示:
1.2时钟简述
1.2.1系统时钟SYSCLK
在单片机中SYSCLK是一切时序的基准,最大为72MHZ(HSI无法发挥到72,最大为64Mhz),由时钟源进行锁相环倍频而来,随后经过可选分频到达AHB总线,随后经过可选分频到达APB1/2总线。
1.2.2HCLK
该总线挂载着系统内核外设
如DMA,内核,存储器,Cortex内核定时器(系统滴答),SDIO
1.2.3APB
该总线挂载着系统片上外设
APB1上的定时器若以72MHZ运行,APB1进入定时器总线还需要进行倍频。
1.2.4
片内低速、高速时钟可以通往RTC实时时钟,高速时钟还可以通往看门狗。
1.2.5
I2S总线来自于系统时钟,USB总线来自于锁相环。
1.2.6
STM32还有输出时钟
如图
1.2.7
在stm32休眠时AHB会关闭运行,同时有一个定时器会被等待唤醒,使用的是FCLK时钟,若外部晶振失效,则CSS安全系统会触发,把时钟源切换到内部晶振。
1.3HAL库函数配置
如图所示
第一个函数配置时钟源与锁相环的分频
HSI校准值的解释如下,可以通过用户改变时钟频率
第二个函数配置系统时钟的时钟源的选择与通往总线
其中第二参数为FLASH的等待周期,由于FLASH访问最高为24MHZ,因此需要等待
第三个宏定义是某个外设的时钟开启
第四个函数为拓展外设时钟