一、时钟体系
给单片机提供一个时钟信号(一个非常稳定的频率信号),使单片机各内部组件同步工作,并且在和外部设备通信时是也能达到同步。
动态调整运行频率,就可以控制性能与功耗!
1、参考手册 STM32F4xx 中文参考手册.pdf 第 106 页
2、时钟源
a.可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK),CPU 运行的频率为 168MHz:
● HSI 振荡器时钟,也就是高速内部时钟,一般来说很少用,因为精度没有外部高速时钟那么高。
● HSE 振荡器时钟,也就是高速外部时钟,GECM4 开发板 8MHz。
● 主 PLL (PLL) 时钟
b.器件具有以下两个次级时钟源:
● 32 kHz 低速内部 RC (LSI RC),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。
● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗。
3、时钟源
二、PLL倍频公式
不同的芯片,倍频(频率翻倍)公式是不一样的,需要查询芯片手册!
三、SystemInit系统初始化函数
1.其实第一个执行的文件是汇编文件
·栈的初始化,提供函数调用的时候进行现场保护和现场恢复
·堆的初始化,为申请内存提供空间,调用malloc
·执行Reset_Handler,意思说上电复位后执行的动作
·执行SystemInit函数
·跳转到main函数
2.初始化Flash接口,更新PLL系统频率
/** * @brief Setup the microcontroller system * Initialize the Embedded Flash Interface, the PLL and update the * SystemFrequency variable. * @param None * @retval None */void SystemInit(void){
................ /* Configure the System clock source, PLL Multiplier and Divider factors, AHB/APBx prescalers and Flash settings ----------------------------------*/ SetSysClock(); ................ }
3.调用SetSysClock