我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 697|回复: 0

[技术文章] STM32时钟系统

[复制链接]

该用户从未签到

36

主题

126

回帖

178

积分

二级逆天

积分
178

终身成就奖特殊贡献奖原创先锋奖

发表于 2021-10-6 09:16:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我们首先从时钟说起,时钟在MCU中的作用,就好比于人类的心脏一样不可或缺。STM32 的时钟相比 51 的单一时钟要复杂些,它有多个时钟源可以使用,那么大家可能会有所疑惑,STM32 的时钟搞的那么复杂干什么,原因其实在于,STM32的外设资源比起51来说,是很丰富的,那么不同外设使用的时钟也会不一样,同时我们要知道时钟越快,功耗就越大,抗电磁干扰的能力就会减弱,因此,比较复杂的MCU 都会采用多时钟来解决这些问题。
那么,这个时钟系统究竟是什么呢??
这里给大家简单总结了下:STM32 共有 5个时钟源,分别为 HSE、LSE、HSI、LSI、PLL,其中,HSE叫做高速外部时钟,可以接外部 4-16 MHz的时钟源;HSI 是高速内部时钟,它内部有一个RC振荡器,可以提供 8 MHz的时钟;LSE是低速外部时钟,外接32.768KHz时钟,作为RTC时钟;LSI 是低速内部时钟,也是一个内部的RC 振荡器,可以提供 40 KHz的时钟,可用作独立看门狗,或RTC的时钟;最后一个 PLL 是锁相环倍频,它的来源可以是HSI/2、HSE、HSE/2,倍频范围为 2-16 倍,这5个时钟源就简单给大家介绍到这里。

                               
登录/注册后可看大图


当选择8MHz的外部时钟经PLL倍频,默认上电后 sysclk = APB2 的时钟 为72MHz,APB1时钟为 36MHz。


下面我们再来介绍下一个特殊的定时器, 这个定时器是 systick ,它属于cortex m3 内核,是一个24位倒计数定时器,我们通过使用这个定时器,可得到一个比较准确的延时。
在学习了STM32的时钟系统后,我们知道系统上电默认是 72MHz的主频,然后在延时初始化中设置了 systick的时钟为9MHz,也就是systick VAL寄存器,里面的值每减少一次就需要 1/9 us的时间,然后下面的代码分别计算了微秒、毫秒的系数,接着在us 延时函数中,我们传入多少us 就会延时多少us。
这里要注意的是,LOAD的寄存器是24位的,因此最大传入的数值为1864135,也就是最多延时这么多微秒,大约1864毫秒,当我们需要延时大于这个值时,多次调用即可。
下面我们直接在主循环中调用毫秒延时,延时1秒,编译无误后,下载到实验板上,观察效果。在这里,我们可以用软件仿真 简单检测下这个延时的准确性。
首先,点开魔术棒工具,然后我们需要在目标选项卡下,将晶振大小修改为我们实验板所外接的晶振 8MHz,然后在 debug 选项卡中选择软件仿真,保存后,我们进入软件调试,复位后我们在输出高低电平加两个断点,然后点击全速运行,观察左侧区域的秒数差,我们可以看到这个延时还是很精准的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

每日签到,有金币领取。


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表