天天看點

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

大家好,本人也是最近才開始接觸STM32Cube,它極大的提高了軟體開發的速度。

閑話少說,切入正題。本人使用的晶片是STM32L151C8T6一款低功耗的晶片。前提條件是:已知外來傳感器PWM波周期是1S,通過低電平脈寬來發送有效資料,我們使用PWM捕獲,将低電平時間顯示在序列槽調試助手。所使用的管腳配置圖如下:

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

接下來本人将詳細的操作順序一步一步給出,友善初學者學習。

1.配置RCC時鐘,本人使用外部高速時鐘,如下圖。

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

2.配置PWM輸入捕獲通道,這裡本人采用到的是TIM2CH1(這個根據自己MCU情況設定,沒有太多要求),如下圖:

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

3.配置序列槽輸出,這裡我們隻是用到了RX,如下圖:

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

4.配置時鐘樹,這裡隻需要配置兩個參數即可,然後回車(至于時鐘樹怎麼配置這裡忽略,不做詳細介紹,網上資料一大堆)

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

6.根據需要配置自己序列槽的波特率,這裡我設定的事9600,當然常見和預設是115200.

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

7.定時器2配置,這裡系統時鐘是32MHZ,3200進行分頻後是10KHZ,也就是說計數10000次就是1S。這裡我設定了20000,也就是計數2S肯定能捕獲1S周期的PWM。并在GPIO下進行如下設定。至此,配置過程結束,打開代碼。

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示
使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

8.在打開工程下,本人将一一介紹變動的程式,沒有作變動的,不做任何介紹。在序列槽.C檔案最後面添加列印映射函數,也就是下圖這一段代碼:

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

9.在初始化程式中添加HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);和  HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);  在main.c後面添加下圖所示的回調函數。

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示
使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

10,編譯,下載下傳之後在序列槽調試助手上面顯示如下:

使用STM32CubeMX捕獲外來PWM高低電平并在序列槽調試助手顯示

附程式代碼:

繼續閱讀