笔记--STM32时钟系统简单总结

STM32时钟系统 笔记--STM32时钟系统简单总结
文章图片

五个蓝色的正方形都是时钟源
HSI(high speed internal)高速内部时钟 RC振荡器不够稳定
图中梯形代表选择器(几选一) PLLXCLK常作为系统时钟来源
HSE (high speed external)高速外部时钟
MCO 是内部时钟输出引脚 对应PA8
绿色矩形对应预分频器
使用每个设备之前 都要进行时钟使能 原因之一就是:设备的功耗问题 不需要的外设就不需要开启时钟了
PCLK1和PCLK2下面挂载了很多外设
笔记--STM32时钟系统简单总结
文章图片

笔记--STM32时钟系统简单总结
文章图片

备注:某一个外设的时钟被使能后 该时钟振荡器还不能马上稳定 所以还有一个标志位代表其是否稳定
笔记--STM32时钟系统简单总结
文章图片

1.对应的是五个时钟源的使能
2.对应的是时钟源的来源配置
3.对应的是由时钟源一层层分频得到的外设时钟的使能
笔记--STM32时钟系统简单总结
文章图片

笔记--STM32时钟系统简单总结
文章图片

SysTick定时器应用(延时函数)
笔记--STM32时钟系统简单总结
文章图片

笔记--STM32时钟系统简单总结
文章图片

笔记--STM32时钟系统简单总结
文章图片

【笔记--STM32时钟系统简单总结】笔记--STM32时钟系统简单总结
文章图片

systic_config这个函数主要设置两个中断之间 有多少个systick时钟周期 即中断之间的时间间隔
笔记--STM32时钟系统简单总结
文章图片

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 这一句把SysTick的时钟选择外部时钟,这里需要注意的是: SysTick 的时钟源自 HCLK 的 8 分频,假设我们外部晶振为 8M,然后倍频到 72M,那么 SysTick 的时钟即为 9Mhz,也就是 SysTick 的计数器 VAL 每减 1,就代表时间过了 1/9us。所以 fac_us=SystemCoreClock/8000000; 这句话就是计算在 SystemCoreClock时钟频率下延时 1us 需要多少个 SysTick 时钟周期。同理, fac_ms=(u16)fac_us*1000; 就是计算延时 1ms 需要多少个 SysTick 时钟周期,它自然是 1us 的 1000 倍。初始化将计算出 fac_us 和fac_ms 的值(其实就是在算定时1us的定时器倒计时的计数值)
笔记--STM32时钟系统简单总结
文章图片

注意这个LOAD是有限制的 因为是24位的定时器 所以MAX值为2^24 -1

    推荐阅读