STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)
文章目錄
- 一、前言
- 二、CubeMX
- 2.1、Clock Configuration
- 2.2、TIM8 Mode and Configuration
- 2.3、Parameter Settings
- Counter Settings
- Output Compare Channel1 與 Output Compare Channel2
- 其他
- 2.4、生成代碼
- 三、代碼
- 3.1、tim.c
- 3.2、燒寫代碼
- 四、示波器
- 五、細節補充
相關筆記:
STM32H743+CubeMX-定時器TIM輸出PWM(PWM Generation模式)
STM32H743+CubeMX-低功耗定時器LPTIM輸出PWM波
一、前言
PWM波形在實際工作上有非常廣泛的使用,尤其在步進電機控制與LED陣列的控制。使用定時器的輸出比較模式(使用定時器的PWM模式也可以)讓TIM8的通道1與通道2產生PWM波形,如下圖所示,PWM波形的頻率5kHz。
通道1與通道2的PWM關系是非對稱關系,相當于互斥。
當通道1為高電平時,通道2為低電平。
當通道1為低電平時,通道2為高電平。
二、CubeMX
2.1、Clock Configuration
根據《STM32H7x3編程參考手冊》第102頁,TIM8的時鐘源是APB2。當前工程上APB2的時鐘頻率是240M(后續用于計算PWM的周期)。
2.2、TIM8 Mode and Configuration
選擇TIM8,然后使能通道1與通道2,其他選項不用管。
2.3、Parameter Settings
Counter Settings
TIM8的溢出頻率=240M / ( Counter Period + 1 ) / ( Prescaler + 1 ),如下圖所示,TIM8的溢出頻率 = 240M / 24000 / 1 = 10kHz。 周期T = 1 / f = 1 / 10k = 100us。
所以TIM8的溢出頻率是10kHz,周期T是100us。
Output Compare Channel1 與 Output Compare Channel2
Mode使用Toggele on match(即定時器ARR寄存器溢出就翻轉電平),因為通道1與通道2的PWM是非對稱關系,所以通道1的CH Polarity與通道2的CH Polarity需取反。
其他
其他配置都不用管,默認。
2.4、生成代碼
選擇生成代碼的方式。
三、代碼
3.1、tim.c
在函數MX_TIM8_Init(void)下添加用戶代碼,調用函數HAL_TIM_OC_Start( )啟動每一個通道的PWM輸出。
3.2、燒寫代碼
編譯,燒寫代碼,接著使用示波器檢測PC6與PC7即可。
四、示波器
在2.3章節將Counter Period設為23999,從而使TIM8的溢出頻率為10kHz。從下圖看到PWM波的頻率不是10kHz,而是5kHz。為什么頻率變成原來的1/2?
原因是Output Compare的Mode為Toggle on match。意思是定時器每溢出1次,就翻轉電平1次。電平翻轉2次才算是PWM波形,所以PWM波的頻率 = TIM8溢出頻率 / 2 = 10kHz / 2 = 5kHz。
所以,使用輸出比較模式產生PWM波時,關鍵是弄明白Counter Period的值與APB2頻率是如何影響定時器產生PWM波的頻率。
五、細節補充
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python2和3安装后怎样切换 mac
- 下一篇: ios 上传图片失败 小程序_微信小程序