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