21ic问答首页 - 在main中调PWM脉宽
在main中调PWM脉宽
zhjb12024-11-13
本帖最后由 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。
谢谢
用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。
谢谢
赞0
评论
2024-11-14
赞0
评论
2024-11-14
赞0
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如在主函数中,所以正确。而此次是作为函数调用。
评论
2024-11-13
您需要登录后才可以回复 登录 | 注册