STM32H743+CubeMX-定时器TIM输出PWM(Out Compare模式) + 中断
文章目錄
- 一、前言
- 二、CubeMX
- 2.1、NVIC Settings
- 2.2、生成代碼
- 三、代碼
- 3.1、tim.c
- 四、DEBUG
- 五、細節補充
一、前言
STM32H743+CubeMX-定時器TIM輸出PWM(Output Compare模式)
上一次的筆記使用定時器的輸出比較方式輸出PWM波,實際使用時,有可能需要在每一次翻轉電平的時候進入一次中斷,在中斷里干一些事情,例如想知道翻轉的總次數。我在實際工作上,有一個需求:需要判斷當前翻轉時,通道1與通道2當前的電平狀態是高電平還是低電平。
二、CubeMX
定時器TIM除中斷外的配置,都跟之前的筆記一樣。所以,這里只看中斷如何配置。
2.1、NVIC Settings
STM32H743+CubeMX-定時器TIM輸出PWM(Output Compare模式)
在之前的筆記前提下,增加NVIC Settings里的中斷。
2.2、生成代碼
三、代碼
3.1、tim.c
在函數void MX_TIM8_Init(void)里使用HAL庫函數HAL_TIM_OC_Start_IT(),該函數的作用是打開比較輸出的同時打開中斷,在手冊《UM2217-Description of STM32H7 HAL and Low Layer drivers》的第159頁。
通道1與通道2是非對稱的關系,所以只打開通道1的中斷即可。
接著,還有一個重要的中斷回調函數void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)。在手冊第1593頁:
這個回調函數需要自己編寫,代碼目的很簡單,在中斷里獲取通道1(PC6)與通道2(PC7)的電平狀態,并計算翻轉的總數。
四、DEBUG
程序能順利進入輸出比較中斷回調函數,從現場表達式查看內存的值,通道1與通道2的電平的確是相反的。
五、細節補充
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-定时器TIM输出PWM(Out Compare模式) + 中断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springcloud的简单使用_微服务
- 下一篇: CANopen | 移植01 - STM