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扑通定时器;上下计数模式,带输入捕捉、输出比较。