STM32f4基本定時器終端控制LED燈亮滅

2021-09-10 09:07:40 字數 3295 閱讀 4314

stm32中的定時器分類:基本定時器、通用定時器、高階定時器  。  429有2

個高階定時器、

10個通用定時器、

2個基本定時器

基本定時器功能簡介

1-計數器

16bit

,只能向上計數,只有

tim6

和tim7 2-

沒有外部的

gpio

,是內部資源,只能用來定時 3-

時鐘來自

pclk1

,可實現

1~65536分頻

基本定時器功能框圖

1-時鐘源

時鐘源來自

rcc的

timx_clk

(屬於內部的

ck_int)

具體的檢視:

rcc

專用時鐘配置暫存器

(rcc_dckcfgr)

系統頻率

為180m ,

則說明 當前

pclk2 = 90m  

pclk1 = 45m 因為

apb1

prescaler

!= 1,

所以 apb1

上的timxclk = pclk1 x 2 = systemcoreclock / 2;

因為apb2 prescaler != 1, 所以 apb2上的timxclk = pclk2 x 2 = systemcoreclock

apb1 定時器有 tim2, tim3 ,tim4, tim5, tim6, tim7, tim12, tim13,tim14-90m

apb2 定時器有 tim1, tim8 ,tim9, tim10, tim11—180m

2-控制器

控制器用於控制定時器的:復位、使能、計數、觸發

dac

涉及到的暫存器為:

cr1/2

、dier

、egr、sr

定時器最主要的就是時基部分:包括預分頻器、計數器、自動重裝載暫存器

預分頻器:16位的預分頻器

timx_psc

對內部時鐘

ck_int

進行分頻之後,得到計數器時鐘

ck_cnt=ck_psc/psc+1

計數器cnt在計數器時鐘的驅動下開始計數,計數一次的時間為1/ck_cnt

計數器、自動重裝載暫存器:定時器使能(cen

置 1)

後,計數器

cnt在

ck_cnt

驅動下向上計數,當

timx_cnt

值與 timx_arr

的設定值相等時就自動生成事件並

timx_cnt

自動清零,然後自動重新開始計數,如此重複以上過程。

影子暫存器:psc和

arr都有影子暫存器,功能框圖上有個影子

影子暫存器的存在起到乙個

緩衝的作用

,使用者值

->

暫存器->

影子暫存器

->

起作用,如果不使用影子暫存器則使用者值在寫到暫存器之後則裡面起作用。

arr影子,timx_cr1:apre

位控制

3-計數器

定時0.5s:1、

psc = 9000-1

,定時器頻率

=90m/(psc+1)=10000hz 2

、arr = 4999,從0

計數到4999

,則計了

5000次

3、t = 5000 /  10000 = 0.5s

時基初始化結構體

檔案bsp_tim_basic.c

#include "bsp_tim_basic.h"

static void basic_tim7_mode_config(void)

static void nvic_tim7basic_config(void)

void tim7_basic_config(void)

檔案bsp_basic.h

#ifndef _bsp_tim_basic_h

#define _bsp_tim_basic_h

#include "stm32f4xx_tim.h"

#include "stm32f4xx_rcc.h"

#include "misc.h"

extern void tim7_basic_config(void);

#endif

main.c

#include "stm32f4xx.h"

#include "bsp_led.h"

#include "bsp_usart.h"

#include "bsp_key.h"

#include "bsp_systick.h"

#include "bsp_tim_basic.h"

extern uint8_t sendbuff[sendbuff_size];

int main(void)

systick_init();

tim7_basic_config();

while(1);

}

在stm32f4xx_it.c中新增如下**

(可能會加一些標頭檔案)

void tim7_irqhandler(void)

gpio_writebit(gpioc,gpio_pin_1,(bitaction)(1-gpio_readoutputdatabit(gpioc,gpio_pin_1))); //控制燈的亮滅

}在stm32f4xx_it.h中新增如下**:

void tim7_irqhandler(void);

STM32F4定時器學習

高階定時器 time1 time8 通用定時器 time2time5,tim9tim14 基本定時器 time6 和 time7 等 tim2 tim5 的暫存器介紹 控制暫存器 1 timx cr1 只用到了 timx cr1 的最低位,也就是計數器使能位,該位必須置 1,才能讓定時器開始計數。d...

stm32F4 時基定時器(2)

找了很多的資料,終於把時基定時器的給弄懂了,沒有使用庫函式,直接操作暫存器。下面介紹stm32中的systick,systick 部分內容屬於nvic控制部分,一共有4個暫存器,名稱和位址分別是 stk csr,0xe000e010 控制暫存器 stk load,0xe000e014 過載暫存器 s...

stm32f4 定時捕獲

概述 1000hz 20 80 占空比現象 1000hz 51 58 占空比現象 關於本文的更多詳情請往下看。筆者針對於初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的 對初學者一看就明白,以簡單明瞭的工程供大家學習。stm32f4 tim輸入波形捕獲 脈衝頻率 占空比 例項 訪問密碼 st...