stm32專題二十五 實現基本定時器定時

2021-09-27 02:52:48 字數 2073 閱讀 8933

利用基本定時器定時過程:

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