PWM频率和占空比
STM32定時器PWM頻率設置,占空比設置
文章目錄
- STM32定時器PWM頻率設置,占空比設置
- 一、必備知識
- 一、頻率設置
- 二、占空比設置
- 總結
自己對于占空比和頻率設置的理解,分享之前自己進入的誤區。對于占空比還是比較好理解的,就是頻率計算讓自己進入了一個誤區。相信對于來看博客的都對這個有一定的了解,對于什么是PWM,有什么用就不再講解,
提示:以下是本篇文章正文內容,下面案例可供參考
一、必備知識
輸出pwm波首先要設置的就是頻率 普及:T=1/f(f越大T越小) 1M Hz = 1000K Hz = 1000000Hz 1 Hz = 1s 1K Hz = 1ms 10K Hz=0.1ms 1M Hz = 1um只需要了解:自動重裝載arr 預分頻psc1、時鐘源
定時器時鐘TIMxCLK,即內部時鐘CK_INT,經APB1預分頻器后分頻提供,如果APB1 預分頻系數等于 1,則頻率不變,否則頻率乘以 2,庫函數中 APB1 預分頻的系數是 2,即 PCLK1=36M,所以定時器時鐘 TIMxCLK=36*2=72M 。
2、預分頻
預分頻兩種方式(每個人習慣不一樣常見的兩種):
(1)給psc賦值為72(7200)等一些比較好計算的值
這張圖可以幫你更好的理解arr和ccr占空比設置的原理
3、管腳重映射語句 TIM3為例(兩個參數參數:1.TIMx是完全重映射還是部分重映射 2.使能)
GPIO_PinRemapConfig(GPIO_PartialRemap_TIMx, ENABLE); //GPIO_PartialRemap_TIM3 TIM3 復用功能部分映射 //GPIO_FullRemap_TIM3 TIM3 復用功能完全映射一、頻率設置
我的誤區(借鑒):知道頻率和時間為反比,但是思考的時候認為1M Hz是1us 那么10K Hz肯定比是0.01us怎么就想不明白,就在那死熬,知道自己肯定哪里錯了,但是就是看不出來,難了我一上午,恍然大迷瞪。希望各位不要在這入坑。
頻率:(兩個例子可以理解一下)
二、占空比設置
設置占空比的方法兩種
方法一:給crr(600)賦值,參考arr(1000)的值,此時占空比為60%
void Init_Pwm(uint16_t ccr){,,,;,,,;,,,;,,,;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;//pwm模式二TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_Low;//輸出極性低TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比較輸出使能TIM_OCInitStruct.TIM_Pulse=ccr;TIM_OC2Init(TIM3,&TIM_OCInitStruct);//打開通道2 }方法二:在配置通道的時候不配置ccr的值,在主函數里面調用庫函數里面的修改ccr值的函數。
調用函數:void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
給crr(6) arr(10) 占空比為60%
總結
第一次寫博客,由于一直想寫,看到身邊的人也都在寫博客。加上由于這個問題我花費了好多時間才弄明白,決定抽出時間,寫一篇讓自己加入到這個大家庭當中,希望大家多多支持。有錯誤的話,歡迎大神指正,寫這個也是督促自己學習。
總結