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