这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 彻底理解STM32F030的时钟源

共5条 1/1 1 跳转至

彻底理解STM32F030的时钟源

工程师
2020-09-28 20:28:30     打赏
彻底理解STM32F030 的时钟源

     

        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、64、5、715等等哦,只有TIM1、3、14、16、17。

    TIM1是高鸡定时器;带输入捕捉、输出比较,三相PWM控制,上下计数模式。

    TIM3、14、16、17扑通定时器;上下计数模式,带输入捕捉、输出比较。





关键词: STM32F030     时钟     时钟源     STM32    

工程师
2020-09-28 20:37:12     打赏
2楼

讲得挺清晰的!


工程师
2020-09-28 20:45:38     打赏
3楼

简单明了,good!


工程师
2020-09-28 20:48:47     打赏
4楼

好像比官方ST讲得详细、通俗易懂


工程师
2020-09-28 22:57:22     打赏
5楼

感谢您的分享


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]