STM32CubeMX學習筆記——STM32H743輸入捕獲
阿新 • • 發佈:2018-12-22
Github
功能簡述
在PA0上進行輸入捕獲,將輸入訊號的頻率與高/低電平時間分別儲存在pre、time變數中
STM32CubeMX配置
STM32CubeMX版本:4.27.0
配置流程:
Pinout介面選擇並開啟TIM5 RCC
Clock Configuration配置時鐘樹
Configuration介面配置System
生成工程
Pinout配置
開啟TIM5定時器並設定為輸入捕獲模式
Clock Configuration配置
開啟系統時鐘,TIM5時鐘(APB1)
Configuration
左側主要系統功能的開啟,或中間軟體層功能的開啟(如:RTOS、JPEG解碼器,檔案系統等)
右側是系統及外設模組的具體配置
GPIO
TIM5
週期=((1+TIM_Prescaler )/時鐘)*(1+TIM_Period )
分頻:0
計數模式:向上計數
重灌值:0xffffffff
時鐘分割:0 (數字濾波器相關)
自動重灌:關閉
MSM:關閉(開啟將在該定時器使能的同時TRGO發出訊號)
Polarity Selection:捕獲方式,當前選擇上升沿、下降沿都會觸發
IC Selection:對映中斷線
Prescaler Division Ratio:輸入分頻
Input Filter:濾波器
NVIC
程式碼部分
main.c
/* USER CODE BEGIN 2 */
HAL_TIM_IC_Start_IT (&htim5,TIM_CHANNEL_1);
/* USER CODE END 2 */
stm32h7xx_it.c
/* USER CODE BEGIN 0 */
uint32_t last = 0;
double fre = 0;
double time = 0;
/* USER CODE END 0 */
/* USER CODE BEGIN 1 */
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
uint32_t i = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);
if (last < i){
time = (i - last) / 200000000.0;
fre = 200000000.0 / ((i - last) * 2);
}
else {
time = ((0xffffffff - last) + i) / 200000000.0;
fre = 200000000.0 / (((0xffffffff - last) + i) * 2);
}
last = i;
}
/* USER CODE END 1 */