作者:初吻给了烟200309 | 来源:互联网 | 2023-07-15 12:10
上篇主要介绍了外部时钟通过PLL分频或者倍频之后得到PLLCLK的整个流程,此流程是芯片启动过程中首先根据硬件需要进行相应配置。只有将上述流程搞清楚,系统才能正常启动。
系统时钟
系统频率为168Mhz,主要来源由以下三种,如下图所示:
系统时钟分别来源于HSE,HSI以及经过PLL分频之后的PLLCLK,由于HSE和HSI频率都不能直接达到168Mhz,所以一般选择PLLCLK所谓系统时钟,在系统启动函数SetSysClock()可以看出配置PLL CLK为系统时钟:
AHB总线时钟
系统时钟选定后,经过一个AHB PRESC分配器可到AHB总线时钟也称为HCLK, 分配器可以配置为[1,2,4, 8, 16, 64, 128, 256, 512] ,AHB总线频率最高可达168Mhz, 系统时钟system clk0。
由上图可知corte 系统定时器频率 将/8再次进行分频,频率为21Mhz.AHB总线挂载模组均为168Mhz
APB时钟
APB时钟在AHB的时钟基础上通过APBx PRESC再次进行分频,APB1 总线时钟挂载低速的外设,比如
USART2/3/4/5、 SPI2/3, I2C1/2 等 ,其总线频率为42Mhz, 故APB1的分频设置为168/42=4。
APB2总线挂载为片上高速的外设,比如全部的 USART1、 SPI1等,其频率为84Mhz,APB2分频器设置为168/84=2.
在 system_stm32f4xx.c文件中,可以看到上述代码建议设置值:
参考文档
《 零死角玩转STM32》
《STM32F4XX中文参考手册》