晚风
发表于 2025-8-7 11:41:19
上面波形问题已解决,不知道初始化时 PWMA_CCER1 |= 0x05; 配置为高电平对不对,不太理解,希望指正
Wddz
发表于 2025-8-7 12:19:20
历害,我都不会玩PWM,ADC这些
梁工
发表于 2025-8-7 13:57:20
晚风 发表于 2025-8-7 11:14
初始化和PWM中断处都改了
我测试了下,第一个脉冲的宽度改变,应该是时序同步或加减速计算造成。
你的波形后面会有一个短脉冲,我这里测试没看到,请使用数字示波器观察比较好。
下面我修改了程序,第一次中断不输出,在第一次中断里允许输出。
Step-Motor.c 为修改后的程序。
Step-Motor-无加减速.c 为去掉加减速的程序,按设置的频率输出。
梁工
发表于 2025-8-7 14:00:12
晚风 发表于 2025-8-7 11:41
上面波形问题已解决,不知道初始化时 PWMA_CCER1 |= 0x05; 配置为高电平对不对,不太理解,希望指正 ...
对的。请参考上面223楼的程序例子。
#define PUlseMode 0 //脉冲有效电平选择:0: 高电平有效,1:低电平有效
PWMA_CCER1 |= 0x05+0x02*PUlseMode; // 开启比较输出, 低电平有效, +0x00:高电平有效, +0x02:低电平有效
晚风
发表于 2025-8-7 21:06:10
短脉冲把宏定义取反直接改成1或0就解决了,可能与编译器有关,感谢梁工百忙中还抽空回复,非常感谢