热点滚动 :
当前位置 主页 > 国家政策 >

如果本来就是使用内部时钟的话

  图中可以看出,M0芯片的时钟源有4个,一个高速内部RC时钟源,频率为8M;一个高速外部时钟源,频率为8到32MHz;一个低速外部时钟源,频率一般为32.768kHz;一个低速内部时钟源,频率为40kHz;

  芯片上电的时候默认启用内部RC震荡,即8MHz的内部时钟源,如果对时钟要求不是特尔高的时候,使用内部时钟也够了,省下一个外部晶振的钱。

  下面首先说说使用内部时钟的配置,官方提供的demo默认的就是使用内部时钟的,我们先从时钟树分析,HSI(8MHz)启动,经过PLLSRC(锁相环时钟源选择寄存器),然后来到PREDIV(预分频器),预分频器选择不分频,然后是PLLMUL(锁相环倍频),这里倍频6倍,得到48MHz的频率,注意不要高于48MHz,芯片最大支持的就是48MHz.,然后是SW(时钟源选择寄存器),这里选择PLLCLK(倍频后的锁相环时钟),其实在这里可以直接选择8MHz的内部时钟,不选择PLLCLK。SW的最终选择就是我们的机器时钟。

  HSE是高速外部时钟的意思,为了获得更低的温飘、更稳定的时钟,一般选择外加一个外部晶振,增加外部晶振的话需要开启外部时钟选择寄存器,然后等待外部时钟震荡平稳,平稳的等待时间需要根据不同的震荡频率选择时长。等待外部时钟震荡平稳后,来到PLLSRC,这里选择HSE,假设外部晶振为8MHz,PREDIV也是选择不分频,PLLMUL选择6倍频,在SW选择时钟源为HSE,然后芯片的机器时钟得到48MHz。

  观察SW寄存器,这里有一个CSS的选择,这是一个时钟安全选择寄存器,功能是当外部晶振突然不工作之后立即切换到HSI的一个选项,当程序运行过程中,外部晶振不震荡之后,系统会马上切换到内部时钟,这个时候,会产生一个同步异常中断,中断级别为负数,且不可修改,在中断里面自行将HSI分频、倍频,然后将主时钟修改为需要的机器时钟。CSS只有在开启了HSE之后才有意义,如果本来就是使用内部时钟的话,这个选项也可以不理会,当然,这个选项也可以选择不开启,默认是不开启的。

  低速外部时钟,这个也是需要自行配置开启的,开启等待震荡平稳后,RTCCLK(实时时钟选择寄存器)选择LSE,目的是给内部的RTC提供一时钟源,关于为什么这里是32.768kHz,本文不打算多讲,请自行百度。LSE也可以作为机器时钟源,本人没有试验过,相信也没有人这么干,如果有,请介绍一下经验,以及目的。

  低速内部时钟,这个提供内部的看门狗寄存器的内部专用时钟,看门狗的看门时长设置就是在这条时钟线上了,看门狗时长一般选择秒级,我的观点是时间越长越好。关于看门狗的使用有一点需要注意的是,无论是裸机开发还是带rtos的开发,都不能在中断中喂狗,整份代码,能且只能有一个地方喂狗。当然,你非要在A、B、C任务的死循环中各喂一次狗,也可以,但是如果读者真的采用这种做法,建议认真想想软件架构是否还有改善的地方。

  基本外设时钟源,根据需要,自行将机器时钟进行预分频获得所需的频率、供给AHB总线上的外设,这个时钟总线上直接挂载了DMA、SRAM、FLITFEN、CRC、GPIO、TSC等外设;分频后还有一路是供给了APB,这里也有一个预分频器,挂载了USART和TIM等,USART的时钟源选择比较丰富,可以选择APB出来的PCLK、也可以直接选择机器时钟、HSI、LSE等;TIM的时钟还有一个预分频器,称为APB1,目的还是为了得到需要的定时时间或者脉宽频率。

  STM32M0的基本时钟讲到这里基本讲完了,初一看这个时钟图还是比较复杂的,就像在学模拟电路的时候,直接把开关电源的原理图拿来看,一样像看天书,但是如果能静下心来,一点一点的啃的话,还是能慢慢吃透的。最近各个芯片厂商都开发了自己的代码生成工具,对于开发而言,方便了许多,也降低开发门槛,但是如果能对芯片有一深刻的认识(当然不用深入到IP层去),出现问题的时候,DEBUG也能快一点,借用宋宝华的一句话:出来混的,迟早要还的。今天不懂的却不愿弄懂的,他日问题重现的时候,就是还的时候了。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  时钟简介时序在数字电路中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了。

相关文章