找回密码
 立即注册
查看: 276|回复: 6

给PWMB_CCR5赋值超出0xFF出现错误

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-02-05 08:56:56

5

主题

6

回帖

65

积分

注册会员

积分
65
发表于 2025-2-3 08:31:23 | 显示全部楼层 |阅读模式
芯片:STC8H      


  PWMB_CCR5 = 0;
        Delay_ms(2000);
        while(PWMB_CCR5 < 600)
        {
            PWMB_CCR5 += 10;
            Delay_ms(1000);
            printf("%d\r\n",PWMB_CCR5);            
        }
程序如上:PWMB_CCR5循环自增,在小于255以下的情况没有问题,超出则出现随机值,请问这是如何造成的。程序开头已经加了 P_SW2 |= 0x80;  //扩展寄存器(XFR)访问使能。
打印信息:

220
230
240
250
\0270
\0290
\0310
\0330
\0350
\0370
\0390
410
430
450
204
470
224
234
244
254
\0274
\0294
\0314
\0334
\0354
\0374
\0394
218


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2025-2-3 10:54:58 | 显示全部楼层
需要改为:printf("%d\r\n",(int)PWMB_CCR5);//否则printf就会出现一些问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-02-05 08:56:56

5

主题

6

回帖

65

积分

注册会员

积分
65
发表于 2025-2-3 11:43:56 | 显示全部楼层
加了(int)强制转换,问题依旧,超过255以后还是每隔一行输出错误,不知道是printf的问题,还是PWMB_CCR5赋值的问题。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-02-05 08:56:56

5

主题

6

回帖

65

积分

注册会员

积分
65
发表于 2025-2-3 12:13:48 | 显示全部楼层
确定是PWMB_CCR5赋值的问题,PWM外接阻容滤波,接万用表看电压,250之前确实电压稳步升高,再到后面就变随机值了,证明确实是PWMB_CCR5赋值的问题,由于随机值造成循环次数也会出错。

点评

如果使用PWMB_CCR5H和PWMB_CCR5L分开赋值试试呢? 同时,可以使用PWMB_CCMR1 = 0x68;以开启预装载 要求是先写高字节然后再写低字节 [attachimg]83300[/attachimg]  详情 回复 发表于 2025-2-3 12:25
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2025-2-3 12:25:44 | 显示全部楼层
armf*** 发表于 2025-2-3 12:13
确定是PWMB_CCR5赋值的问题,PWM外接阻容滤波,接万用表看电压,250之前确实电压稳步升高,再到后面就变随 ...

如果使用PWMB_CCR5H和PWMB_CCR5L分开赋值试试呢?
同时,可以使用PWMB_CCMR1 = 0x68;以开启预装载
要求是先写高字节然后再写低字节

截图202502031225241092.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:144
  • 最近打卡:2025-06-15 07:43:58
已绑定手机

6

主题

36

回帖

496

积分

中级会员

积分
496
发表于 2025-2-3 17:00:37 | 显示全部楼层
CCR5的值必须小于ARR/100,你看看ARR是多少。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-02-05 08:56:56

5

主题

6

回帖

65

积分

注册会员

积分
65
发表于 2025-2-4 19:15:55 | 显示全部楼层
王*** 发表于 2025-2-3 12:25
如果使用PWMB_CCR5H和PWMB_CCR5L分开赋值试试呢?
同时,可以使用PWMB_CCMR1 = 0x68;以开启预装载
要求是 ...

可以了,原来16位寄存器需要分高低字节分别赋值,多谢
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 20:55 , Processed in 0.187112 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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