要求:
一、PWM輸出
?
PWM波生成原理
在此處使用TIM2生成PWM,PA1輸出PWM波。CNT小于CCR時,輸出高電平;CNT大于CCR時,輸出低電平。?
輸入捕獲測量頻率的原理
輸入捕獲的捕獲意思是它在PWM波上升沿或者下降沿的時候,會產生一個中斷。這里設置為每遇到一個上升沿產生一次中斷。
問:如何獲取周期T
答:在上升沿(中斷)產生的時候,將CNT置0,在下一個上升沿(中斷)產生的時候,讀取CNT的值,并將該CNT的值存放在一個變量capture_value(捕獲值)中,這樣就可以計算周期T了。
CNT加1,所耗費的時間
,
應用:測量定時器產生PWM波的頻率。
?通過PA15這個引腳來進行一個定時器的輸入捕獲,去測量555定時器產生的PWM波的一個頻率。
PWM頻率可調是通過電位器R40來調整的
此次輸入捕獲分為兩個部分
1、配置PA15、PB4?這兩個引腳,去輸入捕獲兩個信號發生器(555定時器U8、U7)產生的PWM波,測量該PWM波的頻率。
2、重新定義一個引腳(PA7)去測量PA1輸出的PWM波的頻率。(需要在PA7和PA1這兩個引腳之間連上一根杜邦線)
問題
預分頻的大小要介于可以測量高頻率和低頻信號不會溢出
為了準確地測量信號的變化,捕獲定時器的頻率必須至少高于輸入信號的頻率
第一部分:
HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
?是STM32 HAL庫中用于處理輸入捕獲(Input Capture)事件的回調函數。當定時器捕獲到輸入信號時,該回調函數會被調用。調用時機
輸入捕獲事件:
當定時器配置為輸入捕獲模式時,如果捕獲到信號邊沿(上升沿或下降沿),定時器會將當前計數器的值存入捕獲寄存器,并觸發中斷。
此時,HAL庫會調用?
HAL_TIM_IC_CaptureCallback
?函數。中斷觸發:
輸入捕獲事件會觸發定時器的中斷,HAL庫在中斷服務程序(ISR)中處理捕獲事件,并調用回調函數。
典型應用場景
測量脈沖寬度:
通過捕獲信號的上升沿和下降沿,計算兩次捕獲之間的時間差,從而測量脈沖寬度。
頻率測量:
通過捕獲兩個連續上升沿或下降沿的時間差,計算輸入信號的頻率。
事件計時:
記錄外部事件發生的時間戳。
在STM32的定時器中,CCR(Capture/Compare Register,捕獲/比較寄存器)?是用于輸入捕獲和輸出比較功能的關鍵寄存器。在輸入捕獲模式下,CCR 中存儲的值是?定時器計數器(TIMx_CNT)?在捕獲事件發生時的值。
CCR 里面裝的是什么值?
在輸入捕獲模式下:
當捕獲事件發生時(例如,檢測到上升沿或下降沿),定時器的當前計數器值(
TIMx_CNT
)會被自動復制到 CCR 寄存器中。因此,CCR 中存儲的值是?捕獲事件發生時定時器計數器的值。
輸入捕獲,捕獲的是什么值?
輸入捕獲功能的核心是?捕獲外部信號的邊沿事件,并記錄此時定時器計數器的值。具體來說:
捕獲的信號:
輸入捕獲功能通過定時器的輸入通道(如 TIMx_CH1、TIMx_CH2 等)捕獲外部信號的?邊沿(上升沿、下降沿或雙邊沿)。
邊沿的類型由定時器的配置決定(例如,配置為上升沿捕獲、下降沿捕獲或雙邊沿捕獲)。
捕獲的值:
當捕獲到指定的邊沿時,定時器的當前計數器值(
TIMx_CNT
)會被鎖存到 CCR 寄存器中。這個值可以用來計算:
脈沖寬度:通過捕獲上升沿和下降沿的計數器值,計算兩者之差。
信號周期:通過捕獲兩個連續上升沿(或下降沿)的計數器值,計算兩者之差。
事件時間戳:記錄某個事件發生的時刻(以定時器計數器的值為單位)。
輸入捕獲的工作原理
配置定時器:
定時器以一定的頻率計數(由預分頻器和自動重裝載值決定)。
配置輸入捕獲通道,設置捕獲邊沿(上升沿、下降沿或雙邊沿)。
捕獲事件發生:
當外部信號滿足捕獲條件(例如,檢測到上升沿)時,定時器的當前計數器值(
TIMx_CNT
)會被鎖存到 CCR 寄存器中。同時,定時器會觸發一個中斷或 DMA 請求。
讀取 CCR 的值:
在中斷服務程序或回調函數中,讀取 CCR 的值,用于后續計算(如脈沖寬度、信號周期等)。
示例:測量脈沖寬度
假設定時器配置為上升沿和下降沿捕獲:
第一次捕獲:
當檢測到上升沿時,定時器的計數器值?
TIMx_CNT
?被鎖存到 CCR1 中。假設此時?
CCR1 = 1000
。第二次捕獲:
當檢測到下降沿時,定時器的計數器值?
TIMx_CNT
?被鎖存到 CCR2 中。假設此時?
CCR2 = 3500
。計算脈沖寬度:
脈沖寬度 =?
CCR2 - CCR1 = 3500 - 1000 = 2500
。如果定時器的計數頻率為 1 MHz(每個計數代表 1 μs),則脈沖寬度為 2500 μs。
總結
CCR 中存儲的值:捕獲事件發生時定時器計數器的值(
TIMx_CNT
)。輸入捕獲的功能:捕獲外部信號的邊沿,并記錄此時定時器計數器的值。
典型應用:測量脈沖寬度、信號周期或記錄事件時間戳。
通過合理配置定時器和分析 CCR 的值,可以實現精確的時間測量和信號分析。
第二部分(新建一個項目):?
?