這是一個卑微電子信息學員的開始
這是學習stm32的第四天
寒假開始了,卑微電子信息學員開始了stm32的學習過程。
stm32的初始化注意事項
一. 通過stm32的引腳測量正波長和佔空比的初始化操作
1.以時鐘1爲輸出:
- 以時鐘2爲輸入:
一. 通過stm32的引腳測量正波長和佔空比的函數
1.HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);
該函數的功能爲讀取htim2的Counter peri信息(即次數信息);
2.__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CH
ANNEL_1,TIM_ICPOLARITY_FALLING(或者RISING));該函數的功能爲設置1中的函數HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1); 在上升檐或者下降檐讀取數據;
3.HAL_TIM_IC_Stop_IT(&htim2,TIM_CHANNEL_1);
__HAL_TIM_DISABLE(&htim2);
這兩個函數使htin2停止中斷;
4.HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
__HAL_TIM_ENABLE(&htim2);
這兩個函數使htin2開始中斷;
5.__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CH
ANNEL_1,TIM_ICPOLARITY_FALLING(或者RISING));該函數的默認代碼會有錯誤,將它的裏面兩個函數TIM_RESET_CAPTUREPOLARITY((HANDLE), (CHANNEL));
TIM_SET_CAPTUREPOLARITY((HANDLE), (CHANNEL), (POLARITY)); 中的第一個的代碼改爲#define TIM_RESET_CAPTUREPOLARITY(HANDLE, CHANNEL)
(((CHANNEL) == TIM_CHANNEL_1) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :
((CHANNEL) == TIM_CHANNEL_2) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :
((CHANNEL) == TIM_CHANNEL_3) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC3P)) :
((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC4P)))
一. 通過stm32的引腳測量正波長和佔空比的整體代碼
- 定義的變量有:
- main函數部分:
- 在User Code4中的部分:
- 在時鐘中斷的部分:
小計:這是一個較爲高效的算法,只有當每經過了200us後纔會進行檢測正波長時間的操作,不會佔用CPU或者影響其它任務的進行
本文僅供學習使用,禁止一切轉載或調用,最終解釋權由作者本人享有。