stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做pwm輸出或者輸入捕獲功能。
時鐘源問題:
名為timx的有八個,其中tim1和tim8掛在apb2匯流排上,而tim2-tim7則掛在
apb1匯流排上。其中tim1&tim8稱為高階控制定時器(advanced controltimer).他們所在的apb2匯流排也比apb1匯流排要好。apb2可以工作在72mhz下,而apb1最大是36mhz。
定時器的時鐘不是直接來自apb1或apb2,而是來自於輸入為apb1或apb2的乙個倍頻器。
下面以定時器2~7的時鐘說明這個倍頻器的作用:當apb1的預分頻係數為1時,這個倍頻器不起作用,定時器的時鐘頻率等於apb1的頻率;當apb1的預分頻係數為其它數值(即預分頻係數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等於apb1的頻率兩倍。
假定ahb=36mhz,因為apb1允許的最大頻率為36mhz,所以apb1的預分頻係數可以取任意數值;當預分頻係數=1時,apb1=36mhz,tim2~7的時鐘頻率=36mhz(倍頻器不起作用);當預分頻係數=2時,apb1=18mhz,在倍頻器的作用下,tim2~7的時鐘頻率=36mhz。
有人會問,既然需要tim2~7的時鐘頻率=36mhz,為什麼不直接取apb1的預分頻係數=1?答案是:apb1不但要為tim2~7提供時鐘,而且還要為其它外設提供時鐘;設定這個倍頻器可以在保證其它外設使用較低時鐘頻率時,tim2~7仍能得到較高的時鐘頻率。
再舉個例子:當ahb=72mhz時,apb1的預分頻係數必須大於2,因為apb1的最大頻率只能為36mhz。如果apb1的預分頻係數=2,則因為這個倍頻器,tim2~7仍然能夠得到72mhz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的解析度,這也正是設計這個倍頻器的初衷。
tim通用定時器配置步驟:
1.配置tim時鐘
rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);
rcc_apb2periphclockcmd(rcc_apb2periph_tim1,enable);
2.定時器基本配置
void tim2_configuration(void)
tim_period設定了在下乙個更新事件裝入活動的自動重裝載暫存器週期的值。它的取值必須在0x0000和0xffff之間。
tim_prescaler設定了用來作為timx時鐘頻率除數的預分頻值。它的取值必須在0x0000和0xffff之間。
tim_clockdivision的作用是做一段延時,一般在特殊場合的時候會用到,可不關心。
tim_countermode選擇了計數器模式。
tim_countermode_up
tim向上計數模式
tim_countermode_down
tim向下計數模式
tim_countermode_centeraligned1
tim**對齊模式1計數模式
tim_countermode_centeraligned2
tim**對齊模式2計數模式
tim_countermode_centeraligned3
tim**對齊模式3計數模式
微控制器時鐘頻率72mhz,apb1二分頻36mhz,故tim2自動2倍頻至72mhz,故定時器中斷頻率為72000000/36000/5=400hz
3.使能定時器中斷tim_cmd(tim2, enable);
4.配置nvic。
nvic_initstructure.nvic_irqchannel = tim2_irqchannel;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;
nvic_initstructure.nvic_irqchannelsubpriority =4;
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
5.寫中斷函式
void tim2_irqhandler(void)
STM32通用定時器配置
stm32通用定時器配置 一 stm32 通用定時器原理 stm32 系列的cpu 有多達8 個定時器,其中tim1 和tim8 是能夠產生三對pwm 互補輸出的高階定時器,常用於三相電機的驅動,它們的時鐘由apb2 的輸出產生。其它6 個為普通定時器,時鐘由apb1 的輸出產生。下圖是stm32參...
STM32 通用定時器基本定時功能
1.stm32的timer簡介 stm32中一共有11個定時器,其中2個高階控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的systick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。定時器計數器解析度 計數器型...
STM32 通用定時器基本定時功能
1.stm32的timer簡介 stm32中一共有11個定時器,其中2個高階控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的systick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。定時器計數器解析度 計數器型...