一、定時器節本分類和主要特點
1.stm32定時器分類:
1)看門狗定時器
2)systick定時器
3)rtc定時器
4)通用定時器
a)通用定時器tim2~tim5,當中tim2和tim5是32位,tim3和tim4是16位
具有四個獨立通道
中斷/dma事件
支援增量編碼器和霍爾感測器
b)通用定時器tim9~tim14,16位定時器
最多具有連個獨立通道
中斷事件
5)基本定時器tim6,tim7,16位定時器
同步電路觸發dac
中斷/dma事件
6)高階定時器tim1。tim8,16位定時器
具有四個獨立通道
中斷/dma事件
支援增量編碼器和霍爾感測器
輸入訊號能夠改變計數器狀態或復位
可改變定期器暫存器的反覆計數器。
二、例項1. 定時中斷
1.時鐘初始化
tim_timebaseinittypedef tim_timebasestructure;
rcc_apb1periphclockcmd(rcc_apb1periph_tim2 , enable);
tim_deinit(tim2);
/* 時鐘預分頻數 */
//84000000/84=1000000,預分頻後時鐘為1m
tim_timebasestructure.tim_prescaler= (84 - 1);
/* 自己主動重裝載暫存器週期的值(計數值) */
/* 累計 tim_period個頻率後產生乙個更新或者中斷 */
tim_timebasestructure.tim_period =1000-1 ;
/* 取樣分頻 */
tim_timebasestructure.tim_clockdivision=tim_ckd_div1;
/* 向上計數模式 */
tim_timebasestructure.tim_countermode=tim_countermode_up;
//呼叫初始化函式
tim_timebaseinit(tim2, &tim_timebasestructure);
/* 清除溢位中斷標誌 */
tim_clearflag(tim2, tim_flag_update);
/*設定產生tim_flag_update中斷*/
tim_itconfig(tim2,tim_it_update,enable);
/* 開啟時鐘 */
tim_cmd(tim2, enable);
2. 設定中斷向量。具體的解釋見本部落格有關「中斷」部分的文章
1)中斷初始化
nvic_inittypedef nvic_initstructure;
/* enable tim2 interrupt irq channel */
nvic_prioritygroupconfig(nvic_prioritygroup_2);
nvic_initstructure.nvic_irqchannel = tim2_irqn;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 1;
nvic_initstructure.nvic_irqchannelsubpriority = 0;
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
2)中斷函式
波形非常標準吧:)
stm32f407定時器時鐘頻率的問題
從時鐘樹中我們可以得知 時鐘樹的可以直接參考 ,感謝 xkwy 補上的圖 1 高階定時器timer1,timer8以及通用定時器timer9,timer10,timer11的時鐘 是apb2匯流排 2 通用定時器timer2 timer5,通用定時器timer12 timer14以及基本定時器tim...
STM32F103定時器配置
一 什麼是定時器 定時器,顧名思義,就是用於定時或計數,它其實就是乙個加1計數器。二 了解stm32f103定時器 stm32通用暫存器有tim2 tim3 tim4 tim5。功能包括 1 16位向上 向下 向上 向下自動裝載計數器 timx cnt 2 16位可程式設計預分頻器 timx psc...
STM32F4定時器學習
高階定時器 time1 time8 通用定時器 time2time5,tim9tim14 基本定時器 time6 和 time7 等 tim2 tim5 的暫存器介紹 控制暫存器 1 timx cr1 只用到了 timx cr1 的最低位,也就是計數器使能位,該位必須置 1,才能讓定時器開始計數。d...