STM32定时器时钟 36M和72M迷糊的问题
扫描二维码
随时随地手机看文章
(昵称和头像已经过处理)
这个问题,有很多人问到过。关于STM32定时器的时钟,TIM2使用APB1的时钟,APB1的时钟分明是36M,到了TIM2为什么就是72M了?
来来来,不要把问题想的太复杂,关于这个问题,我们看STM32的时钟图,有必要的话,你可以把时钟图打印出来贴到墙上每天看,见多了就熟悉了。
(我截取了时钟图的一部分)
看第一个圆圈内容,APB1的时钟,最大是36M,由分频系数决定,当分频系数是2的时候,APB1的时钟就是36MHz。
看第二个圆圈内容,当APB1的分频系数不为1的时候,TIMXCLK的时钟就是APB1的时钟乘以2。所以TIM2的时钟就是72MHz了。
为什么可以乘以2?答:手册上就是这么说的,至于为什么,你得去问STM32芯片厂商的IC工程师了。
在Keil里面的system_stm32f10x.c文件的SetSysClockTo72()函数,默认就是配置APB1位2分频,如下图所示:
有同学还会有疑问,当分频系数设置为1的时候,APB1的时钟岂不是72MHz了?答案是NO。
请看CFGR寄存器定义:
当你设置为1的时候,是不起作用的。