[技术讨论] 在main中调PWM脉宽

[复制链接]
1280|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 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

305

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部