stm32的初始化注意事項

這是一個卑微電子信息學員的開始

這是學習stm32的第四天

寒假開始了,卑微電子信息學員開始了stm32的學習過程。

stm32的初始化注意事項

一. 通過stm32的引腳測量正波長和佔空比的初始化操作

1.以時鐘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的引腳測量正波長和佔空比的整體代碼

  1. 定義的變量有:
    uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len);
  2. main函數部分: 在這裏插入圖片描述
  3. 在User Code4中的部分:
    在這裏插入圖片描述
  4. 在時鐘中斷的部分:
    在這裏插入圖片描述

小計:這是一個較爲高效的算法,只有當每經過了200us後纔會進行檢測正波長時間的操作,不會佔用CPU或者影響其它任務的進行

本文僅供學習使用,禁止一切轉載或調用,最終解釋權由作者本人享有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章