这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» 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 跳转至

回复

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