從時鐘樹中我們可以得知
(1)高級定時器timer1, timer8以及通用定時器timer9, timer10, timer11的時鐘來源是APB2總線
(2)通用定時器timer2~timer5,通用定時器timer12~timer14以及基本定時器timer6,timer7的時鐘來源是APB1總線
從STM32F4的內(nèi)部時鐘樹可知,
(1)當APB1和APB2分頻數(shù)為1的時候,TIM1、TIM8~TIM11的時鐘為APB2的時鐘,TIM2~TIM7、TIM12~TIM14的時鐘為APB1的時鐘;
(2)而如果APB1和APB2分頻數(shù)不為1,那么TIM1、TIM8~TIM11的時鐘為APB2的時鐘的兩倍,TIM2~TIM7、TIM12~TIM14的時鐘為APB1的時鐘的兩倍。
根據(jù)時鐘分析,點擊打開鏈接,可知
因為系統(tǒng)初始化SystemInit函數(shù)里初始化APB1總線時鐘為4分頻即42M,APB2總線時鐘為2分頻即84M,所以TIM1、TIM8~TIM11的時鐘為APB2時鐘的兩倍即168M,TIM2~TIM7、TIM12~TIM14的時鐘為APB1的時鐘的兩倍即84M。
知道定時器的時鐘源頻率我們用定時器做延時就很方便了,只要設定合適的分頻系數(shù)即可,附一下用中斷實現(xiàn)延時的公式:(摘自原子的STM32F4開發(fā)指南)
Tout = ((arr+1)*(psc+1))/Tclk;
公式中psc就是分頻系數(shù),arr就是計數(shù)值,達到這個計數(shù)就會發(fā)生溢出中斷,Tclk就是我上述分析的時鐘源頻率。