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%
总结
第一次写博客,由于一直想写,看到身边的人也都在写博客。加上由于这个问题我花费了好多时间才弄明白,决定抽出时间,写一篇让自己加入到这个大家庭当中,希望大家多多支持。有错误的话,欢迎大神指正,写这个也是督促自己学习。