利用基本定時器定時過程:
1 開啟基本定時器的時鐘;
2 定義時基初始化結構體,然後只需要配置分頻係數psc和重裝載計數值arr,其他結構體成員不用管;
3 開啟定時器中斷,這裡要選擇為定時器更新中斷;
4 使能定時器。
接下來是配置過程,非常簡單。
bsp_basictim.c
#include "bsp_basictim.h"
// 中斷優先順序配置
static void basic_tim_nvic_config(void)
static void basic_tim_config(void)
void basic_tim_init(void)
bsp_basictim.h
#ifndef __bsp_basictim_h
#define __bsp_basictim_h
#include "stm32f10x.h"
/********************基本定時器tim引數定義,只限tim6、7************/
#define basic_tim6 // 如果使用tim7,注釋掉這個巨集即可
#ifdef basic_tim6 // 使用基本定時器tim6
#define basic_tim tim6
#define basic_tim_apbxclock_fun rcc_apb1periphclockcmd
#define basic_tim_clk rcc_apb1periph_tim6
#define basic_tim_period (1000 - 1)
#define basic_tim_prescaler (71)
#define basic_tim_irq tim6_irqn
#define basic_tim_irqhandler tim6_irqhandler
#else // 使用基本定時器tim7
#define basic_tim tim7
#define basic_tim_apbxclock_fun rcc_apb1periphclockcmd
#define basic_tim_clk rcc_apb1periph_tim7
#define basic_tim_period (1000 - 1)
#define basic_tim_prescaler (71)
#define basic_tim_irq tim7_irqn
#define basic_tim_irqhandler tim7_irqhandler
#endif
/**************************函式宣告********************************/
void basic_tim_init(void);
#endif /* __bsp_basictim_h */
中斷服務函式:
void basic_tim_irqhandler (void)
}
然後在主函式中進行測試:
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_basictim.h"
volatile uint16_t time = 0;
int main(void)
}}
STM32 基本定時器
中斷韌體庫程式設計 定時器初始化結構體 開始程式設計 本文為野火學習筆記。stm32f1系列。除互聯型裝置,共有8個定時器,分為基本,通用,高階3種定時器。不同的定時器有不同的功能。基本定時器為 tim6,tim7 其只能定時,沒有外部io,且16位計數器只能向上計數。通用定時器為 tim2 3 4...
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...
定時器 STM32定時器 基本定時器1
我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...