一、程式設計要點
1、初始化時基結構體
2、配置中斷優先順序
3、寫中斷服務函式
4、寫主函式
二、定時時間計算
定時時間 = 中斷週期 * 中斷次數
(以1s為例)
tim_prescaler -> timxpsc 暫存器
tim_period -> arr (自動重裝載暫存器)
timxclk 系統時鐘
ck_clk = 1/(timxclk/(psc+1)) =1
中斷週期 = 1/(ck_clk * arr) =0.001s
中斷次數(time) =1000 定時時間 1*0.001*1000=1s
三、結構體&庫函式
1、定時器初始化結構體
typedef struct
tim_timebaseinittypedef;
2、清除中斷標誌函式
void tim_clearflag(tim_typedef* timx, uint16_t tim_flag)
tim_clearflag( basic_timx , tim_flag_update); //清除中斷標誌
@brief 清除中斷標誌
@param1:tim外設號
@param2:要清除的標誌位
3、tim中斷使能函式
void tim_itconfig(tim_typedef* timx, uint16_t tim_it, functionalstate newstate)
tim_itconfig(basic_timx ,tim_it_update,enable); //開啟中斷使能
@brief :開啟中斷使能
@param1:tim外設號
@param2:中斷源
@param3:使能或失能
四、中斷服務函式
void tim6_irqhandler(void)
五、程式原始碼
1、basic_timer.h
#ifndef __basic_timer_h
#define __basic_timer_h
#include "stm32f10x.h"
#define rcc_apbxperiphclockcmd rcc_apb1periphclockcmd
#define rcc_apbx_periph rcc_apb1periph_tim6
#define basic_timx tim6
#define tim_inqx tim6_irqn
void tim6_init(void);
#endif //__basic_timer_h
2、basic_timer.c
#include "basic_timer.h"
static void tim_nvic_config(void) //配置巢狀向量中斷控制器
static void basic_timerinit(void)
void tim6_init(void)
3、main.c
#include "stm32f10x.h" // 相當於51微控制器中的 #include #include "bsp_led.h"
#include "exti.h"
#include "basic_timer.h"
uint32_t timer=0;
int main(void) }
}
基本定時器
按定時器的功能可以分為定時,輸出比較 輸出pwm波 輸入捕獲 測量輸入訊號的脈衝寬度,頻率 互補輸出,按照定時器分類可以分為基本定時器 只有定時功能 通用定時器 有前三個功能 高階定時器 有全部功能 對於我們的f103系列有2個高階定時器tim1和tim8,4個通用定時器tim2 3 4 5,2個基...
定時器 STM32定時器 基本定時器1
我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...
TIM基本定時器 定時
定時 輸出比較 輸入捕獲 互補輸出 分類 基本定時器 定時 通用定時器 定時 輸出比較 輸入捕獲 高階定時器 定時 輸出比較 輸入捕獲 互補輸出 f103系列的開發板一般是倆個高階定時器tim1 tim8 4個通用定時器tim2 3 4 5 2個基本定時器tim6 7 而根據容量的大小,又稍有區別。...