stm32 定時器中斷

2021-09-25 05:37:05 字數 1390 閱讀 4135

stm32f1的定時器非常多,由2個基本定時器(tim6、tim7)、4個通用定時器(tim2-tim5)和2個高階定時器(tim1、tim8)組成。基本定時器的功能最為簡單,類似於51微控制器內定時器。通用定時器是在基本定時器的基礎上擴充套件而來,增加了輸入捕獲與輸出比較等功能。高階定時器又是在通用定時器基礎上擴充套件而來,增加了可程式設計死區互補輸出、重複計數器、帶剎車(斷路)功能,這些功能主要針對工業電機控制方面

1.2 通用定時器結構框圖

1部分為時鐘源。ck_int 為內部時鐘,為apb1的兩倍(72mhz)。itr0—4內部觸發輸入可以提供輸入。

2部分。觸發控制器針對片內外設輸出乙個觸發訊號

3部分。三個暫存器都是16位(1--65535)ckpsc分頻係數,ckcnt為分頻後次數。自動過載暫存器用於重新載入次數。cnt可以配置為向上,向下,中間計數模式。分頻後次數與重載入次數可決定定時時間,公式:((per)*(psc+1))/tclk,tclk為2

4部分。完成輸入捕獲,輸入訊號脈寬,pwm頻率,占空比捕獲的內容。

1.開啟定時器時鐘

2.定時器初始化

3.設定定時器中斷型別並使能

4.清除定時器中斷標誌位

5.設定nvic優先順序

6.開啟定時器

7.定時器中斷服務函式

現象:led1和led2閃爍

*time.c

#include "time.h"

#include "led.h"

void tim4_init(u16 per,u16 psc)

//7*定時器中斷服務函式

void tim4_irqhandler()

tim_clearitpendingbit(tim4,tim_it_update);

}

time.h

#ifndef _time_h

#define _time_h

#include "system.h"

void tim4_init(u16 pre,u16 psc);

#endif

main.c

#include "systick.h"

#include "led.h"

#include "system.h"

#include "time.h"

int main()

delay_ms(10);}}

STM32定時器中斷

本實驗的目的是通過定時器中斷控制led燈的亮滅。筆者所用ide為iar,採用標準庫 3.5韌體庫 通過定時器產生中斷來控制led。ifndef led h define led h include stm32f10x gpio.h include stm32f10x.h include stm32f...

stm32 定時器中斷實驗

led.h ifndef led h define led h include sys.h void led init void define led0 pbout 5 紅燈 define led1 peout 5 綠燈 endif led.c include led.h include stm32...

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...