打印
[技术讨论]

在main中调PWM脉宽

[复制链接]
442|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjb1|  楼主 | 2024-11-13 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhjb1 于 2024-11-13 17:42 编辑

用Work_Bench创建了一个AT的工程,在左实验室能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。
一、PWM脉宽main中调整调整的问题
按照ATWB创建新工程,其中设置了5路ADC最后一路为测试内部温度,4路分别由TIM1、TIM3、TIM4、TIM8都为PWM_A模式,USART1,I2C1,EXTINTIO、Input IO、XMC、一些Output IO。先测试PWM,金额本上与工程常见的PWM频率相同,稍稍低一点,可以容忍的范围。在查看PWM--time初始化函数可以看到控制pwm脉宽的是下语句:
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_1, 30);30是脉宽,相当于周期的1/10,基本吻合。问题按照STM的方法,直接将这行语句放在主函数中,连续改变30,PWM脉宽不变,城市STM芯片的更改脉宽方式也无动于衷。
问题是应该如何更改脉宽?总不能改革脉宽需要重新初始化一下TIM。
谢谢

使用特权

评论回复

相关帖子

沙发
zhjb1|  楼主 | 2024-11-13 16:33 | 只看该作者
自己解答:
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_1, 30);
命令没有问题,以前出错错在采用了for循环,因为数值不大,看不到波形就又回到主循环了,改成:
if(pwm1<256)
pwm1++;
else
pwm1=1;
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_1,pwm1);
就一切正常了。
在STM实例中,for如在主函数中,所以正确。而此次是作为函数调用。

使用特权

评论回复
板凳
full_stack| | 2024-11-14 00:45 | 只看该作者
主函数有其他执行命令吧,所以不同的效果。

使用特权

评论回复
地板
xionghaoyun| | 2024-11-14 08:40 | 只看该作者
学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

245

帖子

1

粉丝