找回密码
 立即注册
查看: 92|回复: 5

pwm,那位大佬能帮忙解答一下

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-09-08 17:13:16
已绑定手机

1

主题

3

回帖

29

积分

新手上路

积分
29
发表于 2025-9-3 20:05:37 来自手机 | 显示全部楼层 |阅读模式
直接给pwmduty一个数值,电机正常运行,转速也发生变化,但pwmduty的值是计算出来的,作为参数传入,电机异常。
Image_1756900929732.png
Image_1756900927899.png
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-09-08 17:13:16
已绑定手机

1

主题

3

回帖

29

积分

新手上路

积分
29
发表于 2025-9-3 20:07:19 | 显示全部楼层
用的stc32g12k128
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-09-14 21:35:08

76

主题

6722

回帖

1万

积分

超级版主

积分
14131
发表于 2025-9-3 22:50:50 | 显示全部楼层
将计算后的PWM值显示出来,就知道原因了。
如果是同一个数值,直接给值还是计算出来的值,都是一样的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-09-13 12:30:47
已绑定手机
已实名认证

116

主题

2803

回帖

7082

积分

版主

积分
7082
发表于 2025-9-4 07:09:31 | 显示全部楼层
可能为两种情况:
1.计算后的值出现了负数,因为PWM寄存器无法接受负数,所以会出现奇怪的异常
2.存在中断打断数据传输的情况,导致变量在中途被修改了。需要防止在主循环和中断内操作同一变量
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-09-08 17:13:16
已绑定手机

1

主题

3

回帖

29

积分

新手上路

积分
29
发表于 6 天前 来自手机 | 显示全部楼层
王昱顺 发表于 2025-9-4 07:09
可能为两种情况:
1.计算后的值出现了负数,因为PWM寄存器无法接受负数,所以会出现奇怪的异常
2.存在中断 ...

解决了,原因是两个uint16的整数相减,在if里面判断差是否大于某个数时,如果差为正,那判断没问题,如果差为负,系统会将这个负数转换成uint16的正数,导致占空比一直自增。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-09-08 17:13:16
已绑定手机

1

主题

3

回帖

29

积分

新手上路

积分
29
发表于 6 天前 来自手机 | 显示全部楼层
梁工 发表于 2025-9-3 22:50
将计算后的PWM值显示出来,就知道原因了。
如果是同一个数值,直接给值还是计算出来的值,都是一样的。 ...

解决了,原因是两个uint16的整数相减,在if里面判断差是否大于某个数时,如果差为正,那判断没问题,如果差为负,系统会将这个负数转换成uint16的正数,导致占空比一直自增。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-14 22:12 , Processed in 0.123813 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表