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

关于STC8A8K64D4单片机中15bit增强型PWM的 归零中断 问题

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:669
  • 最近打卡:2026-05-08 09:50:55

33

主题

2970

回帖

6722

积分

论坛元老

积分
6722
发表于 2024-4-3 09:25:37 | 显示全部楼层 |阅读模式
关于试验箱例程中 避免第一次开启PWM计数时 会触发一次归零中断的避免方法这里

截图202404030915512087.jpg

  1. //PWMCEN写0再写1时, 会立即产生一个归零中断, 通过以下方法屏蔽掉这个中断
  2.                 EA = 0;
  3.                 PWMCFG = 0x05; //启动 PWM 模块, 使能计数器归零中断
  4.                 _nop_();
  5.                 _nop_();
  6.                 PWMCFG &= ~0x08;        //清标志位
  7.                 EA = 1;
复制代码
是否可以理解为 关闭总中断后 开启PWM计数时 虽然归零标志位仍然会置位但是 由于关闭了总中断,清除了归零标志之后 再打开总中断也不会触发 PWM中断。。

那么基于以上理解,那是不是可以不用关闭总中断。 只是 不开启归零中断,在清除了归零标志位后再开启归零中断,,是否可以达到相同的效果。
  1.     PWMCFG |= PWMCEN; // 启动PWM 但不开启归零中断
  2.     _nop_();
  3.     _nop_();
  4.     PWMCFG &= ~PWMCBIF; // 清标志位
  5.     PWMCFG |= PWMCBIE; //开启归零中断
复制代码


参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:340
  • 最近打卡:2026-05-08 10:33:48

85

主题

7361

回帖

1万

积分

超级版主

积分
15901
发表于 2024-4-3 22:57:31 | 显示全部楼层
基本上,正常的开启中断都是: 清除中断标志,NOP(3); 开中断。
比如外中断INT0~INT4用于下降沿中断,在禁止终端期间,只要出现过下降沿,则中断标志就为1,一旦允许中断,马上进去,所以要先清除中断标志,NOP(3); 开中断。
同理,定时器也一样,一旦溢出,中断标志就会置1,开中断前,先清除标志,NOP(3); 再开中断。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:669
  • 最近打卡:2026-05-08 09:50:55

33

主题

2970

回帖

6722

积分

论坛元老

积分
6722
发表于 2024-4-7 16:32:11 | 显示全部楼层
梁*** 发表于 2024-4-3 22:57
基本上,正常的开启中断都是: 清除中断标志,NOP(3); 开中断。
比如外中断INT0~INT4用于下降沿中断,在禁 ...

嗯嗯 虽然没有正面回答我的问题,,

但是梁工描述的和我理解的基本吻合,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2026-02-14 08:49:40

8

主题

27

回帖

248

积分

中级会员

积分
248
发表于 2026-2-2 15:41:51 | 显示全部楼层
你好,用您上面的代码,并不能屏蔽第一个归零中断,我把延时加长了,还是不行
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:669
  • 最近打卡:2026-05-08 09:50:55

33

主题

2970

回帖

6722

积分

论坛元老

积分
6722
发表于 2026-2-3 14:47:27 | 显示全部楼层
zan*** 发表于 2026-2-2 15:41
你好,用您上面的代码,并不能屏蔽第一个归零中断,我把延时加长了,还是不行 ...

抱歉,已经是很久之前测试的代码了。。。

由于我实际的应用中,多一个中断少一个中断并没有太大差距。所以这里也有浅尝辄止的问了问。

如果您能把出现问题的最简工程发上来,或许我能看出来是不是有其他的问题。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2026-02-14 08:49:40

8

主题

27

回帖

248

积分

中级会员

积分
248
发表于 2026-2-14 08:49:40 | 显示全部楼层
_奶*** 发表于 2026-2-3 14:47
抱歉,已经是很久之前测试的代码了。。。

由于我实际的应用中,多一个中断少一个中断并没有太大差距。所 ...

我的一个程序,需要单次启动PWM,延时一定时间,改T1/T2,
再单次启动PWM,延时,如此重复,
实验的结果不能正常运行,输出的波形和设计的不一样,
单次启动,就是设好T1/T2,启动,在归零中断中,停止PWM
之前,连续运行PWM,在归零中断里改T1/T2,就没有问题,
至于第一次就不关心了

点评

你重新发个贴,MCU型号, 要实现的功能,你的完整简单测试程序, 现象,我请研发帮您分析  详情 回复 发表于 2026-2-14 09:56
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2026-05-08 09:46:24

850

主题

1万

回帖

2万

积分

管理员

积分
23212
发表于 2026-2-14 09:56:16 | 显示全部楼层
zan*** 发表于 2026-2-14 08:49
我的一个程序,需要单次启动PWM,延时一定时间,改T1/T2,
再单次启动PWM,延时,如此重复,
实验的结果不 ...

你重新发个贴,MCU型号,
要实现的功能,你的完整简单测试程序,
现象,我请研发帮您分析
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-9 05:47 , Processed in 0.120235 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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