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

STM32时钟系统

这里写图片描述
五个蓝色的正方形都是时钟源
HSI(high speed internal)高速内部时钟 RC振荡器不够稳定

图中梯形代表选择器(几选一) PLLXCLK常作为系统时钟来源

HSE (high speed external)高速外部时钟

MCO 是内部时钟输出引脚 对应PA8

绿色矩形对应预分频器

使用每个设备之前 都要进行时钟使能 原因之一就是:设备的功耗问题 不需要的外设就不需要开启时钟了

PCLK1和PCLK2下面挂载了很多外设
这里写图片描述

这里写图片描述

备注:某一个外设的时钟被使能后 该时钟振荡器还不能马上稳定 所以还有一个标志位代表其是否稳定
这里写图片描述

1.对应的是五个时钟源的使能
2.对应的是时钟源的来源配置
3.对应的是由时钟源一层层分频得到的外设时钟的使能

这里写图片描述

扫描二维码关注公众号,回复: 1822450 查看本文章

这里写图片描述

SysTick定时器应用(延时函数)
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

systic_config这个函数主要设置两个中断之间 有多少个systick时钟周期 即中断之间的时间间隔

这里写图片描述
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的定时器倒计时的计数值)
这里写图片描述

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

猜你喜欢

转载自blog.csdn.net/qq_15897133/article/details/80864407