? ? ? ? 本文將介紹通用定時器的概念、相關函數以及STM32CubeMX生成定時器的配置函數以及對生成定時器的配置函數進行分析(包括結構體配置、相關寄存器配置)。
? ? ? ? 本文以TIM2/TIM5、TIM3/TIM4為基礎介紹通用定時器(包含通用定時器全部功能),其余的通用定時器都是功能閹割版,可自行查閱芯片的reference manual和HAL庫手冊。
????????最后針對于通用定時器實踐:使用TIM2輸出PWM控制全彩LED燈;輸入捕獲MCU開發學習記錄8 - 基本定時器學習與實踐(HAL庫)的LED燈高電平持續時間;主從定時器移相控制(利用主定時器輸出一路PWM同時作為觸發信號,從定時器輸出移相PWM波)。
0. F4系列定時器分類
- 最大接口時鐘(Max interface clock (MHz))
1. 定時器與系統內核(如MCU)之間的通信接口(如APB總線)支持的最高時鐘頻率。
2. 它決定了定時器寄存器配置和狀態讀取的速度上限。例如,如果接口時鐘為84 MHz,則對定時器寄存器的讀寫操作需基于該頻率進行,不能超過此速率。 - ?最大定時器時鐘(Max timer clock (MHz))
1.?定時器內部計數器(Counter)實際運行時的最高時鐘頻率。
2.?它決定了定時器的計數速度,直接影響定時器的計時精度和輸出信號的頻率上限。例如,168 MHz的定時器時鐘意味著計數器每秒最多遞增168,000,000次。
????????
????????
1.?什么是通用定時器?
1.1?通用定時器概念
1.1.1 通用定時器功能說明
????????STM32F4系列的通用定時器為TIM2/TIM5(32位定時器,即計數值CNT有32位)、TIM3/TIM4(16位定時器)、TIM9-TIM14(16位定時器,功能閹割版)。
- TIM2/TIM5、TIM3/TIM4功能相同(只有計算器位數不同):
·?遞增、遞減和遞增/遞減(雙向)的計數模式
·?4個獨立通道:輸入捕獲;輸出比較;PWM 生成(邊沿和中心對齊模式)、單脈沖輸出
·?多定時器主從互連以及外部信號控制定時器
·?如下事件時生成中斷/DMA 請求:
? ? ? ? 1.?更新:計數器上溢/下溢、計數器初始化(通過軟件或內部/外部觸發)
? ? ? ? 2. 觸發事件(計數器啟動、停止、初始化或通過內部/外部觸發計數)
? ? ? ? 3. 輸入捕獲
? ? ? ? 4. 輸出比較
·?增量編碼器與霍爾傳感器支持
·?外部時鐘模式允許定時器使用外部信號作為時鐘源,而不是內部的APB時鐘。這有兩種模式:外部引腳輸入(通過定時器的 ?外部觸發輸入引腳(TIMx_ETR)?? 接收外部脈沖信號。即外部脈沖直接驅動定時器的計數器遞增。)和外部觸發輸入(來自其他外設的觸發信號(如另一個定時器的 ?TRGO信號、ADC的轉換完成信號等))。
- TIM9/TIM12:
· 只有 遞增計數模式
· 2個獨立通道:輸入捕獲;輸出比較;PWM 生成(邊沿和中心對齊模式)、單脈沖輸出
· 多定時器主從互連以及外部信號控制定時器
·?如下事件時生成中斷:
? ? ? ? 1.?更新:計數器上溢/下溢、計數器初始化(通過軟件或內部/外部觸發)
? ? ? ? 2. 輸入捕獲
? ? ? ? 3. 輸出比較
- TIM10、TIM11、TIM13、TIM13:
· 只有 遞增計數模式
· 1個獨立通道:輸入捕獲;輸出比較;PWM 生成(邊沿和中心對齊模式)、單脈沖輸出
·?如下事件時生成中斷:
? ? ? ? 1.?更新:計數器上溢/下溢、計數器初始化(通過軟件或內部/外部觸發)
? ? ? ? 2. 輸入捕獲
? ? ? ? 3. 輸出比較
1.1.2 通用定時器框圖
下圖為正點原子開發指南里面的通用定時器框圖,如下所示。
????????
- 時鐘來源選擇: · 內部時鐘 (CK_INT)· 外部時鐘模式 1 :外部輸入引腳 (TIx)· 外部時鐘模式 2 :外部觸發輸入 (ETR) ,僅適用于 TIM2 、 TIM3 和 TIM4 。· 內部觸發輸入 (ITRx)(定時器主從模式) :使用一個定時器作為另一個定時器的預分頻器,例如可以將定時器配置為定時器 2 的預分頻器。
- TIM控制器:
復位、使能、計數、TRGO(通用觸發輸出)定時器或DAC/ADC、編碼器接口。 - 時基單元:
· 計數模式:遞增、遞減和遞增/遞減(雙向/中心對齊模式)
·?預分頻器寄存器 (TIMx_PSC) - 具有影子寄存器
·?計數器寄存器 (TIMx_CNT)
·?自動重載寄存器 (TIMx_ARR)- 具有影子寄存器 - 輸入捕獲通道:
配置TIMx_CCER(CCnP/CCnNP)使能TIMx_CHn輸入通道,生成TInF(Timer Input n Filter)信號,通過邊沿檢測器生成對應邊沿信號TInFPx(Timer Input n Filtered and Polarity-Processed)經過預分頻器生成ICnPS(Input Capture n Prescaler)觸發對應輸入捕獲事件。 - 輸入捕獲/輸出比較通道共用部分:
·?輸入捕獲部分:
? 描述了輸入捕獲事件相關寄存器配置,以及讀CCRx的計數值。
·?輸出比較部分:
? 描述了輸出捕獲事件相關寄存器配置,以及寫CCRx的計數值。 - 輸出比較通道:
本部分主要兩個功能:一是PWM輸出;二是做TRGO的觸發信號。
1.2?通用定時器-時鐘計數模式(三種)
TIMx_CR1.CMS(Center-aligned mode selection):中心對齊模式選擇
TIMx_CR1.DIR(Direction):方向(遞增、遞減)
TIMx_CR1.URS((Update request source):中斷或 DMA 請求的請求源選擇
TIMx_CR1.UDIS(Update disable):使能/禁止 UEV 事件
TIMx_CR1.CEN(Counter enable):計數器使能
????????

1.2.1?通用定時器-遞增計數模式
????????
1.2.2?通用定時器-遞減計數模式
????????
1.2.3?通用定時器-中心對齊模式(遞增/遞減計數)
????????
????????????
CMS=11
????????
CMS=01(counter underflow)CMS=10(counter overflow)
????????
1.3?通用定時器時鐘源
????????
1.3.1?通用定時器時鐘源1-內部時鐘源 (CK_INT)
? ? ? ? SMS = 000(即禁止從模式控制器),CEN 位、DIR 位(TIMx_CR1 寄存器中)和UG位(TIMx_EGR 寄存器中)為實際控制位。
????????
1.3.2?通用定時器時鐘源2-外部時鐘模式 1:外部輸入引腳 (TIx)
????????SMS = 111,即計數器可在選定的輸入信號上出現上升沿或下降沿時計數。
????????
芯片參考手冊中舉例:要使遞增計數器在 TI2 輸入出現上升沿時計數,請執行以下步驟:
????????
1.3.3?通用定時器時鐘源3-外部時鐘模式 2:外部觸發輸入 (ETR)
????????
????????
芯片參考手冊中舉例:要使遞增計數器在 ETR 每出現 2 個上升沿時計數,請執行以下步驟:
????????
????????
????????
1.3.4?通用定時器時鐘源4-內部觸發輸入 (ITRx)
????????參考本文的1.6.2?定時器同步
1.3?通用定時器-輸入捕獲/輸出比較通道
1.3.1?輸入捕獲通道
下圖為正點原子開發指南注釋的輸入捕獲通道圖。
????????
工作流程:
? ? ? ? 外部信號->TIx引腳->TIxF信號->TIxFPx信號(邊沿極性信號)->ICx(輸入捕獲)->ICxPS
1.3.2 共用通道-?輸入捕獲部分
下圖為正點原子開發指南注釋的共用通道-?輸入捕獲部分圖。
????????
1.3.3?共用通道-?輸出比較部分
下圖為正點原子開發指南注釋的共用通道-?輸出比較部分圖。
????????
1.3.4?輸出比較通道
下圖為正點原子開發指南注釋的輸出比較通道圖。
????????
1.4 通用定時器輸入模式
1.4.1?輸入捕獲模式
1. 輸入捕獲模式說明:
? ? ? ? 當檢測到外部信號(如TI1引腳)的指定邊沿(上升沿/下降沿)?時,將當前計數器值鎖存到捕獲寄存器(TIMx_CCRx)中。
????????通過中斷或DMA通知系統讀取捕獲值,用于計算信號頻率、脈寬等參數。
2. 關鍵寄存器:
-
?輸入通道(TI1/TI2等)??:外部信號輸入引腳。
-
?輸入濾波(ICxF)??:消除信號抖動。
-
?邊沿檢測(CCxP/CCxNP)??:選擇觸發邊沿(上升沿/下降沿)。
-
?捕獲寄存器(TIMx_CCRx)??:存儲捕獲時的計數器值。
-
?中斷/DMA標志(CCxIF/CCxOF)??:通知系統捕獲完成。
3. 具體流程:
-
選擇有效輸入通道(映射TI1到CCR1)
·?TIMx_CCMR1.?CC1S[1:0] - 01(輸入模式)
· (輸入模式,即TIMx_CCMR1.?CC1S[1:0]不等于0)使TIMx_CCR1變為只讀模式 -
配置輸入濾波(消除信號抖動)?
·?TIMx_CR1.?CKD[1:0] - 設置 tDTS數字濾波器采樣時鐘
·?TIMx_CCMR1.?IC1F[3:0] - 設置可定義 TI1 輸入的采樣頻率和適用于 TI1 的數字濾波器帶寬。數字濾波器由事件計數器組成,每 N 個事件才視為一個有效邊沿: -
選擇有效觸發邊沿?
·?TIMx_CCER.CCxP - 0 上升沿、1 下降沿
·?TIMx_CCER.CCxNP - 雙邊沿觸發 -
配置輸入預分頻器(禁止預分頻)
·?TIMx_CCMR1.IC1PS[1:0] - 設置00
,禁止預分頻器,即每次檢測到有效邊沿均觸發捕獲。? -
使能捕獲功能
·?TIMx_CCER.CC1E - 1:允許計算器的值捕獲到捕獲寄存器中。 -
使能中斷/DMA請求
·?TIMx_DIER.CC1IE - 1:使能捕獲完成中斷。
·?TIMx_DIER.CC1DE - 1:使能DMA請求(需配合DMA控制器初始化)。
4. 捕獲事件處理流程:
-
跳變沿檢測?
TI1輸入信號經過濾波和邊沿檢測后,確認有效上升沿。 -
?計數器值鎖存
?·????計數器值立即寫入TIMx_CCR1寄存器。 -
標志位更新
·????CC1IF標志(TIMx_SR寄存器)?? 置1,表示捕獲完成。
·????若中斷已使能(CC1IE=1),觸發中斷服務程序(ISR)。
·????若DMA已使能(CC1DE=1),觸發DMA傳輸。 -
重復捕獲處理
·????未及時讀取TIMx_CCR1或清除CC1IF標志,下次捕獲時CC1OF標志(溢出標志)置1,提示數據覆蓋風險。 -
標志位清除
·??TIMx_SR.?CC1IF:軟件寫0 或 讀取TIMx_CCR1寄存器。
·??TIMx_SR.?CC1OF:軟件寫0。
注:TIMx_EGR.CC1G置1,可生成IC中斷和DMA請求。
1.4.2?PWM輸入模式
1. PWM輸入模式說明:
????????一個外部引腳(TI1)即可同時捕獲PWM信號的周期(Period)?和占空比(Duty Cycle)?。
?????????IC1通道?:捕獲PWM信號的上升沿,記錄周期值(TIMx_CCR1)。
?????????IC2通道?:捕獲PWM信號的下降沿,記錄占空比(TIMx_CCR2)。
????????計數器復位?:每次捕獲上升沿時,觸發從模式控制器復位計數器(TIMx_CNT),確保周期測量準確性。
2. 具體流程:
-
配置IC1通道(捕獲上升沿,測量周期)?
·?TIMx_CCMR1.CC1S[1:0]? -?01,將IC1映射到 ?TI1輸入?(即PWM信號輸入引腳)。
·?TIMx_CCER.CC1P/CC1NP - 00,選擇上升沿觸發。 -
配置IC2通道(捕獲下降沿,測量占空比)?
·?TIMx_CCMR1.CC2S[1:0] - 10,將IC2也映射到 ?TI1輸入?(同一引腳)。
·?TIMx_CCER.CC1P/CC1NP - 10,選擇上升沿觸發。 -
配置從模式控制器(復位模式)?
·?TIMx_SMCR.TS[2:0] -?101,選擇觸發源為 ?TI1FP1?(即IC1的濾波后信號)。
·?TIMx_SMCR.SMS[2:0] -100,使能從模式為復位模式(上升沿復位計數器)。 -
使能捕獲功能
·?TIMx_CCER.CC1??????E/CC2E都寫入 1,允許捕獲到TIMx_CCR1和TIMx_CCR2。
????????
1.5 通用定時器輸出模式
1.5.1?強制輸出模式
1. 強制輸出模式說明:
????????強制輸出模式允許軟件直接控制定時器的輸出比較信號(OCxREF和OCx引腳電平),?繞過計數器與比較寄存器的比較邏輯,強制設定輸出狀態。強制輸出時,計數器與影子寄存器的比較仍正常執行,可觸發中斷或DMA請求。
2. 具體流程:
-
配置通道為輸出模式
·?TIMx_CCMRx.CCXS[1:0] - 00,選擇通道為輸出模式?(默認模式)。 -
強制設置輸出電平
·?TIMx_CCMRx.OCxM[2:0] - 100:強制OCxREF為無效電平;101:強制OCxREF有效電平。 -
配置輸出極性(CCxP位)?
·?TIMx_CCER.?CCxP - 0:高電平有效;1:低電平有效 -
中斷/DMA觸發邏輯?:
若計數器與比較寄存器匹配,?CCxIF標志(TIMx_SR)?? 置1,觸發中斷或DMA請求。
1.5.2?輸出比較模式
1. 輸出比較模式說明:
????????輸出比較模式(特別是 ?翻轉模式)允許定時器在計數器(TIMx_CNT)與捕獲/比較寄存器(TIMx_CCRx)匹配時,自動翻轉輸出引腳(OCx)的電平。
2. 關鍵寄存器:
- 輸出模式(OCxM)??:定義匹配時的輸出行為(如翻轉、置高、置低)。
- ?輸出極性(CCxP)??:控制輸出引腳是否反相。
- ?預裝載寄存器(OCxPE)??:決定是否啟用影子寄存器(緩沖寫入的TIMx_CCRx值)。
3. 具體流程:
-
?選擇計數器時鐘(設置PSC)?:
-
寫入TIMx_ARR和TIMx_CCRx?:
-
?使能中斷/DMA請求:
·??CCxIE位?(中斷使能):置1時,匹配事件觸發中斷。
?·?CCxDE位?(DMA使能):置1時,匹配事件觸發DMA請求。? -
?選擇輸出模式(翻轉模式)??:
·??OCxM=011?:選擇翻轉模式(匹配時翻轉輸出電平)。
·??OCxPE=0?:禁用預裝載寄存器(直接寫入TIMx_CCRx生效)。
?·??CCxP=0?:輸出極性為不反相(OCxREF與OCx引腳電平一致)。
?·??CCxE=1?:使能輸出引腳。 -
啟動計數器?:
TIMx_CR1.
CEN 置1,啟動計數器。
????????
1.5.3 PWM輸出模式
1. PWM輸出模式說明:
????????PWM模式通過定時器的 ?自動重載寄存器(TIMx_ARR)?? 和 ?捕獲/比較寄存器(TIMx_CCRx)?? 生成頻率和占空比可調的脈沖信號。
????????
2. 具體流程:
-
選擇PWM模式(模式1或模式2)
向 TIMx_CCMRx 寄存器的 ?OCxM[2:0]位? 寫入:
?·??PWM模式1?:110
(有效電平在計數器 < CCRx 時保持,否則無效)。
?·??PWM模式2?:111
(有效電平在計數器 > CCRx 時保持,否則無效)。 -
使能預裝載寄存器
?·??使能捕獲/比較預裝載(TIMx_CCRx):TIMx_CCMRx.OCxPE = 1。
?·??使能自動重載預裝載(TIMx_ARR):TIMx_CR1.ARPE = 1。 -
初始化寄存器(生成更新事件)
?·??TIMx_EGR 寄存器的 ?UG位? 寫入1
,手動生成更新事件。 -
配置輸出極性
?·??TIMx_CCER 寄存器的 ?CCxP位? 寫入:0:高電平有效;1:低電平有效 -
使能輸出引腳
?·?TIMx_CCER 寄存器的 ?CCxE位? 寫入1
,使能OCx引腳輸出。 -
設置自動重載值(ARR)和比較值(CCRx)
?·?TIMx_ARR、?TIMx_CCRx -
啟動計數器
?·?TIMx_CR1.?CEN寫入1
,啟動計數器。 -
PWM信號生成邏輯
?·?PWM.CMS?中心對齊模式選擇
?·?PWM.DIR 計算器方向(PWM.CMS[1:0] - 00)
? ? ? ? CCIF是捕獲/比較中斷標志位
????????
????????
????????
3. 注意:
????????
1.6?定時器的外部觸發同步
1.6.1?從模式-復位模式:SMS=100
????????復位模式(Reset Mode)是STM32定時器的一種從模式,?通過外部信號(如TI1上升沿)復位計數器(TIMx_CNT)?,并可選生成更新事件(UEV)以刷新預裝載寄存器。
- 外部觸發復位?:當檢測到指定觸發信號(如TI1上升沿)時,立即復位計數器(TIMx_CNT=0)。
- ?更新事件(UEV)生成?:若
TIMx_CR1.URS=0
,復位時會觸發UEV事件,更新預裝載寄存器(TIMx_ARR和TIMx_CCRx)。 - ?中斷/DMA觸發?:復位事件可觸發中斷或DMA請求,用于同步其他操作。
????????
1.6.2?從模式-門控模式:SMS=101
????????門控模式是一種通過 ?外部輸入信號電平(如TI1)控制計數器啟停? 的定時器操作模式,適用于需要根據外部設備狀態動態控制計數的場景(如啟動/暫停測量、外部同步控制等)。
- ?電平觸發啟停?:根據外部信號(如TI1)的電平高低,控制計數器的運行(低電平啟動計數,高電平停止計數)。
- ?中斷觸發?:計數器啟動或停止時,
TIF
標志(TIMx_SR
寄存器)置1,可觸發中斷或DMA請求。 - ?同步延遲處理?:輸入信號(TI1)需經過同步電路,避免亞穩態影響計數精度。
????????
1.6.3?從模式-觸發模式:SMS=110
- 外部觸發啟動計數器?:當檢測到指定輸入信號(例如TI2上升沿)時,啟動計數器根據內部時鐘開始遞增。
- ?中斷標志置位?:觸發事件發生時,
TIF
標志(TIMx_SR
寄存器)置1,可用于中斷或DMA通知。 - ?同步延遲處理?:外部輸入信號(TI2)需經過同步電路,導致觸發信號與實際計數器啟動之間存在1-2個時鐘周期的延遲。
????????
1.6.4?從模式-外部時鐘模式 2 +觸發模式:SMS=110
????????外部時鐘模式2(ETR作為時鐘源)?? 和 ?觸發模式(TI11上升沿啟動計數器)?,實現由外部觸發信號控制計數器在外部時鐘驅動下精準計數。
- ?外部時鐘源?:ETR引腳作為計數器的時鐘源(每個上升沿觸發計數)。
- ?觸發啟動?:TI11的上升沿作為觸發信號,啟動計數器(CEN=1)。
- ?同步延遲處理?:ETR信號需通過同步電路,導致計數器實際遞增延遲1-2個時鐘周期。
????????
1.7 定時器同步
?????????定時器同步? 允許通過主從模式配置,將多個定時器級聯或協同工作,實現復雜的時序控制、頻率擴展及多外設同步。
通用定時器內部連接表和定時器同步內部結構連接圖
????????
????????
????????
1.7.1?一個定時器用作另一個定時器的預分頻器(外部時鐘模式)
????????TIM1配置為主定時器、TIM2配置為從定時器,從而實現 ?TIM1作為TIM2的預分頻器。即利用 ?TIM1的更新事件(UEV)?? 作為 ?TIM2的外部時鐘源,使TIM2的計數速率由TIM1的溢出頻率控制。?
- ?TIM1?:作為預分頻器,通過ARR值設定觸發周期。
- ?TIM2?:在TIM1的每次溢出時遞增,擴展整體計數范圍或降低時鐘頻率。
配置流程:
-
配置TIM1為主定時器
?·?設置主模式(MMS=010)?:TIM1_CR2
寄存器的 ?MMS[2:0]位? 寫入010
,選擇 ?更新事件(UEV)?? 作為觸發輸出(TRGO)。
?·?設定TIM1的周期(ARR值)
?·?使能TIM1計數器:TIM1_CR1
寄存器的 ?CEN位? 寫入1
,啟動TIM1計數。 -
配置TIM2為從定時器
?·?選擇觸發源(TS=000):TIM2_SMCR
寄存器的 ?TS[2:0]位? 寫入000
,選擇 ?內部觸發源0(ITR0)?,即TIM1的TRGO信號。
?·?設置外部時鐘模式(SMS=111)?:TIM2_SMCR
寄存器的 ?SMS[2:0]位? 寫入111
,選擇 ?外部時鐘模式1。
?·?使能TIM2計數器:TIM2_CR1
寄存器的 ?CEN位? 寫入1
,啟動TIM2計數。
1.7.2?使一個定時器使能另一個定時器(門控模式,OC1REF為觸發源)
1. 功能介紹:
通過 ?定時器1的OC1REF信號? 作為門控信號,控制 ?定時器2的計數啟停。
- ?OC1REF高電平?:定時器2根據分頻后的時鐘計數。
- ?OC1REF低電平?:定時器2停止計數,保持當前值。
- ?應用場景?:測量外部信號高電平持續時間、節能模式下的間歇計數。
2. 配置流程:
1.? 定時器1配置(主模式,生成OC1REF波形)??
-
?主模式設置:
TIM1_CR2.MMS[2:0]=100
。將定時器1的 ?OC1REF信號? 作為觸發輸出(TRGO),用于控制定時器2。 -
?輸出比較配置(PWM模式):?
TIM1_CCMR1.OC1M[2:0]=110
(PWM模式1)。TIM1_CCR1=0x80
:占空比50%(高電平占128個時鐘)。
TIM1_ARR=0xFF
:定義PWM周期為256個時鐘。 -
?時鐘分頻:?
TIM1_PSC=2
(3分頻,實際時鐘頻率為f_CK_CNT=f_CK_INT/3
)。 -
?啟動定時器1:?
TIM1_CR1.CEN=1
。
?2. 定時器2配置(從模式,門控控制)??
-
?觸發源選擇:
TIM2_SMCR.TS[2:0]=000
(選擇 ?ITR0,即TIM1的TRGO信號)。 -
?門控模式使能:
TIM2_SMCR.SMS[2:0]=101
。定時器2的計數器僅在OC1REF高電平時遞增。 -
?時鐘分頻與啟動?
-
?預分頻器?:
TIM2_PSC=2
(3分頻)。 -
?啟動定時器2?:
TIM2_CR1.CEN=1
(實際計數受OC1REF電平控制)。
-
?3. 初始化注意事項?
-
?計數器未初始化?:
-
若未復位,定時器2從當前值開始計數(示例中從0x3045開始)。
-
-
?強制復位方法?:
-
寫入
TIMx_EGR.UG=1
,復位計數器(如啟動前寫入TIM2_CNT=0
)。
-
????????
????????
1.7.3?使一個定時器使能另一個定時器(門控模式,CNT_EN為觸發源)
1. 功能介紹:
通過 ?定時器1的使能信號(CEN)?? 控制 ?定時器2的啟停,實現主從定時器的同步。
- ?主定時器1啟動(CEN=1)??:定時器2開始計數。
- ?主定時器1停止(CEN=0)??:定時器2停止計數。
- ?應用場景?:多設備同步啟停、精確控制計數窗口。
2. 配置流程:
????????
1.7.4?使用一個定時器啟動另一個定時器(觸發模式)
????????利用定時器1的更新事件(UEV)作為觸發信號,自動啟動 ?定時器2的計數器(CEN=1)?,并控制其計數周期。
????????? ?主模式(TIM1)??:生成更新事件作為觸發信號(TRGO)。
????????? ?從模式(TIM2)??:配置為觸發模式(Trigger Mode),收到觸發信號后自動啟動計數。
????????和1.7.3相比,需要更改的是TIM2_SMCR
寄存器的 ?SMS[2:0]位? 寫入 110
,選擇?觸發模式。
????????
2. 基于HAL庫通用定時器實踐
2.0 通用定時器寄存器與相關函數
2.0.1?通用定時器寄存器-寄存器基地址
????????
2.0.2?通用定時器寄存器-寄存器
????????
????????
2.1 RGB LED燈(三路PWM波)
2.1.1?RGB LED燈工作原理
????????LED RGB 140C05 通過PWM 信號?調節紅(R)、綠(G)、藍(B)三個通道的亮度,實現顏色混合。(使用PWM2 :CNT小于CCRx,為無效電平(設置高電平為有效電平))
????????
2.1.2 CubeMX配置通用定時器外設
2.1.3 通用定時器外設初始化流程

2.1.4 RGB_LED實踐代碼
2.1.5 RGB_LED實踐效果
2.2 輸入捕獲變化的高電平
2.2.1 CubeMX配置通用定時器外設
????????
2.2.2 通用定時器外設初始化流程
????????
????????
2.2.3 輸入捕獲實踐代碼
? ? ? ? 在正點原子輸入捕獲實驗進行修改
2.2.4 輸入捕獲實踐效果
????????
2.3?主從定時器移相控制
2.3.1 CubeMX配置通用定時器外設(TIM3-TRGO觸發TIM9)
????????
????????
2.3.2 通用定時器外設初始化流程
????????
????????
????????
2.3.3 輸入捕獲實踐代碼
????????
2.3.4 輸入捕獲實踐效果
通過調整TIM3-CH1的ARR即可實現任意移相。
????????
3.?本文的工程文件下載鏈接
工程Github下載鏈接:https://github.com/chipdynkid/MCU-DL-STM32
(國內)工程Gitcode下載鏈接https://gitcode.com/chipdynkid/MCU-DL-STM32