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...