大家好,本人也是最近才開始接觸STM32Cube,它極大的提高了軟體開發的速度。
閑話少說,切入正題。本人使用的晶片是STM32L151C8T6一款低功耗的晶片。前提條件是:已知外來傳感器PWM波周期是1S,通過低電平脈寬來發送有效資料,我們使用PWM捕獲,将低電平時間顯示在序列槽調試助手。所使用的管腳配置圖如下:
接下來本人将詳細的操作順序一步一步給出,友善初學者學習。
1.配置RCC時鐘,本人使用外部高速時鐘,如下圖。
2.配置PWM輸入捕獲通道,這裡本人采用到的是TIM2CH1(這個根據自己MCU情況設定,沒有太多要求),如下圖:
3.配置序列槽輸出,這裡我們隻是用到了RX,如下圖:
4.配置時鐘樹,這裡隻需要配置兩個參數即可,然後回車(至于時鐘樹怎麼配置這裡忽略,不做詳細介紹,網上資料一大堆)
6.根據需要配置自己序列槽的波特率,這裡我設定的事9600,當然常見和預設是115200.
7.定時器2配置,這裡系統時鐘是32MHZ,3200進行分頻後是10KHZ,也就是說計數10000次就是1S。這裡我設定了20000,也就是計數2S肯定能捕獲1S周期的PWM。并在GPIO下進行如下設定。至此,配置過程結束,打開代碼。
8.在打開工程下,本人将一一介紹變動的程式,沒有作變動的,不做任何介紹。在序列槽.C檔案最後面添加列印映射函數,也就是下圖這一段代碼:
9.在初始化程式中添加HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);和 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); 在main.c後面添加下圖所示的回調函數。
10,編譯,下載下傳之後在序列槽調試助手上面顯示如下:
附程式代碼: