STM32定時(shí)器時(shí)鐘 36M和72M迷糊的問題
(昵稱和頭像已經(jīng)過處理)
這個(gè)問題,有很多人問到過。關(guān)于STM32定時(shí)器的時(shí)鐘,TIM2使用APB1的時(shí)鐘,APB1的時(shí)鐘分明是36M,到了TIM2為什么就是72M了?
來來來,不要把問題想的太復(fù)雜,關(guān)于這個(gè)問題,我們看STM32的時(shí)鐘圖,有必要的話,你可以把時(shí)鐘圖打印出來貼到墻上每天看,見多了就熟悉了。
(我截取了時(shí)鐘圖的一部分)
看第一個(gè)圓圈內(nèi)容,APB1的時(shí)鐘,最大是36M,由分頻系數(shù)決定,當(dāng)分頻系數(shù)是2的時(shí)候,APB1的時(shí)鐘就是36MHz。
看第二個(gè)圓圈內(nèi)容,當(dāng)APB1的分頻系數(shù)不為1的時(shí)候,TIMXCLK的時(shí)鐘就是APB1的時(shí)鐘乘以2。所以TIM2的時(shí)鐘就是72MHz了。
為什么可以乘以2?答:手冊(cè)上就是這么說的,至于為什么,你得去問STM32芯片廠商的IC工程師了。
在Keil里面的system_stm32f10x.c文件的SetSysClockTo72()函數(shù),默認(rèn)就是配置APB1位2分頻,如下圖所示:
有同學(xué)還會(huì)有疑問,當(dāng)分頻系數(shù)設(shè)置為1的時(shí)候,APB1的時(shí)鐘豈不是72MHz了?答案是NO。
請(qǐng)看CFGR寄存器定義:
當(dāng)你設(shè)置為1的時(shí)候,是不起作用的。