定时器--STM32f4--HAL
基本概念
STM32中有三種定時(shí)器,高級(jí)定時(shí)器,通用定時(shí)器,基本定時(shí)器,具體如下圖:
發(fā)生如下事件將產(chǎn)生中斷/DMA
- 更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化
- 觸發(fā)事件:計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù)
- 輸入捕獲
- 輸出比較
- 支持針對定位的增量(正交)編碼器和霍爾傳感器電路
- 觸發(fā)事件作為外部時(shí)鐘或者按周期的電流管理
計(jì)數(shù)器模式
定時(shí)器中斷實(shí)現(xiàn)步驟
具體代碼
使用TIM3讓LED1每500ms亮一次
HAL_TIM_Base_Init初始化定時(shí)器后,會(huì)調(diào)用HAL_TIM_Base_MspInit函數(shù),我們可以在HAL_TIM_Base_MspInit中使能TIM3,HAL_TIM_Base_MspInit還開啟TIM3中斷以及設(shè)置中斷優(yōu)先級(jí)
對于Init參數(shù)
- Instance 可以取值TIM1到TIM14,表示使用哪個(gè)定時(shí)器
- CounterMode :計(jì)數(shù)模式,向上/下
- Period :自動(dòng)裝載值,即ARR的值
- Prescaler :預(yù)分配系數(shù),即PSC的值
- ClockDivision: 時(shí)鐘分頻因子,定時(shí)器時(shí)鐘與數(shù)字濾波器分頻比
- RepetitionCounter:重復(fù)計(jì)數(shù)次數(shù),高級(jí)定時(shí)器使用
定時(shí)時(shí)間=(Period+1)(Prescaler+1)/Tclk
Tclk:輸入時(shí)鐘頻率,TIM3為90M,計(jì)算得出定時(shí)時(shí)間=0.5s
步驟1-4是配置TIM3定時(shí)器中斷,步驟5是來處理TIM3定時(shí)器中斷
當(dāng)定時(shí)器TIM3時(shí)間到了時(shí),會(huì)調(diào)用TIM3_IRQHandler函數(shù),每個(gè)定時(shí)器都用一個(gè)中斷服務(wù)處理函數(shù),在TIM3_IRQHandler中,我們使用了HAL庫定時(shí)器通用處理函數(shù)HAL_TIM_IRQHandler,HAL_TIM_IRQHandler內(nèi)部會(huì)調(diào)用HAL_TIM_PeriodElapsedCallback更新回調(diào)函數(shù),我們在HAL_TIM_PeriodElapsedCallback寫邏輯處理就可以了
main函數(shù)調(diào)用time_init即可,具體代碼
int main(void) {//u8 press;HAL_Init();Stm32_Clock_Init(360,25,2,8);delay_init(180);Rcc_Init();LED_Init();KEY_Init();time_init();while(1){}}總結(jié)
以上是生活随笔為你收集整理的定时器--STM32f4--HAL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想p0510投影仪灯坏了怎么办?
- 下一篇: 独立看门狗---STM32----HAL