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

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

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

1

主题

3

回帖

39

积分

新手上路

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

使用道具 举报 送花

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

1

主题

3

回帖

39

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-10-15 13:18:53

77

主题

6775

回帖

1万

积分

超级版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:591
  • 最近打卡:2025-10-15 09:49:21
已绑定手机
已实名认证

116

主题

2889

回帖

7364

积分

版主

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

使用道具 举报 送花

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

1

主题

3

回帖

39

积分

新手上路

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

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

使用道具 举报 送花

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

1

主题

3

回帖

39

积分

新手上路

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 10:28 , Processed in 0.129007 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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