STM32,,怎么控制输出PWM波的频率??比如我用TIM3的CH1和CH2输出两路PWM,,怎么样独立控制这两路频率?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32,,怎么控制输出PWM波的频率??比如我用TIM3的CH1和CH2输出两路PWM,,怎么样独立控制这两路频率?相关的知识,希望对你有一定的参考价值。

我只知道初始化的时候通过预分频PSC和ARR初始化一个频率,,之后怎么改??我看函数库有一个SetICnPrescaler的,,可惜是输入分频的,,有没有类似控制输出通道频率的??
就像用TIM_SetCompare2(TIM3,led0pwmval);可以即时改变占空比一样我想能即时改变频率

参考技术A 这个实验我刚研究过,我说说,看你可能理解我说的!
TIM_SetCompare2(TIM3,led0pwmval);通过这个函数可以往捕获/ 比较寄存器2(TIM3_CCR2)里面写值,当定时器3更新的时候,把led0pwmval写入到TIM3_CCR2里面,然后定时器就会不停的把TIM3_CNT寄存器的值和TIM3_CCR2寄存器里面的值进行比较,假如你设置的是向上计数模式,并且通过这个函数(TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高)把TIM3的输出/比较极性设置为高的时候,那么此时如果TIM3_CNT<TIM3_CCR2那么输出就是低电平,如果TIM3_CNT>=TIM3_CCR2那么输出就是高电平,所以在这里(//输出极性:TIM输出比较极性高)的意思是TIM3_CNT>=TIM3_CCR2时候的极性为高,明白了不?本回答被提问者采纳

STM32如何设置PWM波的频率为10HZ

最近用STM32和L298电机驱动来实现电机的PID控制,但发现从定时器端口输出PWM波时,占空比从0到100%电机都是全转速运作,转速完全没变,网上说有可能是PWM波频率高了所致,10HZ左右可以实现V平均=V最大*占空比,求方法或程序

参考技术A 配置定时器的arr和psc,输出频率=时钟频率/((arr+1)*(psc+1))追答

arr=8999,psc=0输出就是10Hz 了

参考技术B L298N用10Hz太低了,电机噪声会很大,1k比较合适本回答被提问者和网友采纳 参考技术C 10hz就用定时自己做做了!就不要用stm的自带PWM了!

以上是关于STM32,,怎么控制输出PWM波的频率??比如我用TIM3的CH1和CH2输出两路PWM,,怎么样独立控制这两路频率?的主要内容,如果未能解决你的问题,请参考以下文章

stm32输出的pwm有啥用

STM32怎么实现精确控制PWM输出数量同时能改变频率

STM32怎么实现精确控制PWM输出数量同时能改变频率

STM32怎么实现精确控制PWM输出数量同时能改变频率

求一stm32产生spwm波的程序

STM32怎么输出六路频率和个数可控的PWM波形?不要频繁中断的设置,因为还有其他程序要处理