打印

理解一下STM32F030 的时钟(转发)

[复制链接]
1466|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
redone|  楼主 | 2021-12-30 09:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 redone 于 2021-12-30 09:57 编辑

STM32F030F4P6 的时钟系统是很强大的,一般强大意味着复杂,需要花时间去理解。
STM32F030有4路时钟源
        1  内部8MHz的高速RC振荡;优点是省钱、省钱、省钱,缺点是精度差点儿,差多少?手册上说误差在
            1%左右。什么概念?嗯,都按负偏差算的话一周168小时累计少1.68小时。
                   看来用它作长时间累计不太靠谱,用来作短时间的重复控制倒无所谓,挺好。

        2  外部4-32M晶体振荡;即OSC_OUT和OSC_IN2管脚接振荡晶体。你买的振荡晶体的精度有多高,时
             间的精度就有多高,缺点是精度高的(低温漂)振荡晶体费钱。

        3  外部时间日历振荡;即OSC_32OUT和OSC_32IN管脚接32.768kHz振荡晶体,为嘛叫时间日历振荡
            尼?  鹰为这个32.768kHz振荡晶体用作时间日历来说比几M、几十M的振荡晶体更好分频取秒信号,不信
            拆了你的劳力士手表,里面也是这个玩意儿。

        4  内部低速40kHz的RC振荡;内部都有高速8M的RC振荡了干嘛又整出一个低速振荡来尼?嗯,用来喂
            程序看门狗挺好的。

            不对呀,说好的4路时钟源为嘛上图只有内部高速和外部高速2路尼?故意不画的,怕你看多了晕,嘿
    嘿!

              没晕的话接着说,看一眼上图,内部8M振荡只能除以2后进选择开关1(PLLSRC)被选中,进入倍频
     模块(PLLMUL),可以选择2-16倍频,倍频后最高能到48MHz。之后被选择开关2选择,注意了选择开关2
     也可以选择8M内部振荡直通,缺点是频率只能到8MHz不能倍频。如被选择后进入AHB预分频器。

             外部振荡可以选择4-32M的晶体,玩的花样也多些。比如内部8M振荡只能除以2后进选择开关1,而外
    部振荡可以除以1、2、..16,后进选择开关1(PLLSRC)被选中,进入倍频模块(PLLMUL)。但倍频后最
    高也是48MHz,这是芯片的命门,无法突破( 什么!你要超频???  %¥@…@)。其它同内部8M振荡一
    样都是进到AHB预分频器。

            AHB预分频器的分频系数可就多了去了,从1、2直到512。分频后就叫系统频率即HCLK,出来后其
    它不多说,重点说下有1路去了APB预分频器。

            AHB去了APB、 AHB去了APB、AHB去了APB、AHB去了APB、AHB去了APB,重要的事情说5遍,为
    的是绕晕你,晕菜了吧!哈哈,不晕?再念8遍。
           吃货:      跑风了,应该是,

          释惑
          AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。多用于
                      如CPU、DMA和DSP等。
          APB,是Advanced Peripheral Bus的缩写,译作高级总线这是一种外围总线。多用于低速,各种串口,
                      普通TIM、ADC等。

          闭上眼想想,到底儿是AHB去了APB还是APB去了AHB?又晕菜了不是!!!!!

          来,记住了,水由高流向低,Bus也是,嗨B总比破B强啊,所以是A HB预分频后到A PB预分频器。
   在APB预分频器还得按2、4、6、8选择分频。咋这多分频尼??理解的都快吐了,没辙,王八屁股,龟腚。
   从APB预分频器出来就叫PCLK,去TIM的话还要进入倍频器。
   如果APB预分频器的分频系数选1,则TIM的倍频器不倍频,直接入TIM1、3、14、16、17。
   如果APB分频系数选2、4、6、8、16,则TIM频率在倍频器乘以2再进TIM1、3、14、16、17。

           唉、终于进TIM了,好好费劲哦! 为啥要倍下频尼?因为在APB分频后要给低频外设用,但TIM可能需
    要高的频率,所以在APB分频后又加了个倍频。

           注意啊!其它相似芯片在APB和TIM倍频器之间还会有APB1或APB2预分频器的,该芯片木有滴,只
   有APB预分频器,但有叫RCC_APB1ENR的寄存器,这个寄存器像是个开关,一些外设使用,如USB、
   I2C、SPI、各个TIM使用前都要设置RCC_APB1ENR寄存器,把相应的开关位打开才能使用。
   举个栗子:

          使用TIM3前都要有  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
   这一句的作用就是设置RCC_APB1ENR的相关的位,打开APB到TIM3的通道开关。
    来,把上图的屎栗再捋一下:

    看上图红箭头线,假设选用内部RC的8M振荡,
        a   频率=8/2=4M,进选择开关1;
        b  进PLLMUL倍频器选择12倍频,频率=4M*12=48M
        c  进AHB分频器,分频系数选1,  频率=48M/1=48M
        d  进APB分频器,分频系数选1,  频率=48M/1=48M
        e  进倍频器,如APB分频器的分频系数选1,不倍频  频率=48M。最大输出频率可是不超过48M哦。
        f  进各TIM的时钟也叫来自RCC的CK_INT时钟,接着就是TIM内部寄存器的分频、计数设置了。
    注意,STM32F030F4P6可是没有TIM2、6、4、5、7、15等等哦,只有TIM1、3、14、16、17。
    TIM1是高**定时器;带输入捕捉、输出比较,三相PWM控制,上下计数模式。
    TIM3、14、16、17扑通定时器;上下计数模式,带输入捕捉、输出比较。

(出处:https://www.cnblogs.com/beiyhs/p/11225502.html               北有寒山)

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

742

帖子

5

粉丝