定時器功能:定時 定時比較(pwm波) 輸入捕獲 互補輸出(電機)
定時器分類:基本定時器 通用定時器 高階定時器
定時器資源:429有2個高階定時器 10個通用定時器 2個基本定時器
計數器解析度:計數最大值 2^16/32
基本定時器
計數器16位,只能向上計數 只有tim6 tim7
沒有外部gpio,是內部資源,只能用來定時
時鐘來自pclk1 可以實現1~65535 分頻
定時時間計算
psc = 9000-1,定時頻率 = 90m/(psc+1) = 10000hz
arr = 4999 從0計數到4999 共計數5000次
t = 5000/10000 = 0.5s
tim結構體
uint16_t
tim_clockdivision 外部輸入時鐘分頻因子,基本定時器沒有
uint16_t
tim_countermode 計數模式:向上計數/向下計數
uint32_t
tim_period 自動裝載值
uint16_t
tim_prescaler 分頻因子
uint8_t
tim_repetitioncounter 重複計數器,基本定時器沒有
基本定時器只需要配置
tim_prescaler
tim_countermode(預設向上計數)
tim_period
.c檔案
static void timx_nvic_configuration(void)
static void tim_mode_config(void)
/** * @brief 初始化基本定時器定時,1ms產生一次中斷
* @param 無
* @retval 無
*/void timx_configuration(void)
.h檔案
#ifndef __basic_tim_h
#define __basic_tim_h
#include "stm32f4xx.h"
#define basic_tim tim6
#define basic_tim_clk rcc_apb1periph_tim6
#define basic_tim_irqn tim6_dac_irqn
#define basic_tim_irqhandler tim6_dac_irqhandler
void timx_configuration(void);
#endif /* __basic_tim_h */
.it中斷服務函式
注意:如果不清除標誌位則會一直呼叫中斷服務函式,無限迴圈
tim_clearitpendingbit(basic_tim , tim_it_update);
void basic_tim_irqhandler (void)
}
定時器 STM32定時器 基本定時器1
我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...
基本定時器
一 程式設計要點 1 初始化時基結構體 2 配置中斷優先順序 3 寫中斷服務函式 4 寫主函式 二 定時時間計算 定時時間 中斷週期 中斷次數 以1s為例 tim prescaler timxpsc 暫存器 tim period arr 自動重裝載暫存器 timxclk 系統時鐘 ck clk 1 ...
基本定時器
按定時器的功能可以分為定時,輸出比較 輸出pwm波 輸入捕獲 測量輸入訊號的脈衝寬度,頻率 互補輸出,按照定時器分類可以分為基本定時器 只有定時功能 通用定時器 有前三個功能 高階定時器 有全部功能 對於我們的f103系列有2個高階定時器tim1和tim8,4個通用定時器tim2 3 4 5,2個基...