找回密码
 立即注册
楼主: Jason

STC8H8K64U, PWMA 疑似丢失中断信号 | 修改用户程序完善

[复制链接]

4

主题

22

回帖

100

积分

注册会员

积分
100
 楼主| 发表于 2026-8-18 18:18:01 | 显示全部楼层
                sr1 = PWMA_SR1;
                PWMA_SR1 = 0;   
如果这样取值,会出现漏中断标志的情况, 请问应如何写代码来规避这个情况呢?
回复

使用道具 举报 送花

4

主题

22

回帖

100

积分

注册会员

积分
100
 楼主| 发表于 2026-8-18 18:43:26 | 显示全部楼层
清PWMA_SR1时,刚好发生中断时,这个标志就被“丢失”了。
截图202608181841408798.jpg
截图202608181842012433.jpg
回复

使用道具 举报 送花

已绑定手机

7

主题

411

回帖

6594

积分

论坛元老

积分
6594
发表于 2026-8-19 09:24:54 | 显示全部楼层
Jas*** 发表于 2026-8-18 18:43
清PWMA_SR1时,刚好发生中断时,这个标志就被“丢失”了。

你在另一个帖子中的回复我已收到,
刚才测试了一下,发现似乎有解:
程序中对PWMA_SR1置位操作无效,不会引发中断;
因此程序中对PWMA_SR1清零操作,可以只清除某一位;
可以这样写:
  1.         if(PWMA_SR1 & 0x01)
  2.         {
  3.                 PWMA_SR1 = ~0x01;//只清除bit0
  4.         }
  5.         if(PWMA_SR1 & 0x02)
  6.         {
  7.                 PWMA_SR1 = ~0x02;//只清除bit1
  8.         }
复制代码
回复

使用道具 举报 送花

4

主题

22

回帖

100

积分

注册会员

积分
100
 楼主| 发表于 2026-8-19 09:57:24 | 显示全部楼层
lcws*** 发表于 2026-8-19 09:24
你在另一个帖子中的回复我已收到,
刚才测试了一下,发现似乎有解:
程序中对PWMA_SR1置位操作无效,不会 ...

只要回写PWMA_SR1,就有概率撞上清掉bit位。
回复

使用道具 举报 送花

已绑定手机

7

主题

411

回帖

6594

积分

论坛元老

积分
6594
发表于 2026-8-19 10:20:50 | 显示全部楼层
Jas*** 发表于 2026-8-19 09:57
只要回写PWMA_SR1,就有概率撞上清掉bit位。

确定是按我的方法来的?你把工程发上来我试试。
回复

使用道具 举报 送花

4

主题

22

回帖

100

积分

注册会员

积分
100
 楼主| 发表于 2026-8-19 10:26:39 | 显示全部楼层
lcws*** 发表于 2026-8-19 10:20
确定是按我的方法来的?你把工程发上来我试试。

ACC = PWMA_SR1;   //此时b2,b3为0
ACC &= ~b1;           //此时b2, b3出现1
PWMA_SR1 = ACC;   //回写0,导致b2,b3被“清除”
回复

使用道具 举报 送花

已绑定手机

7

主题

411

回帖

6594

积分

论坛元老

积分
6594
发表于 2026-8-19 10:30:38 | 显示全部楼层
Jas*** 发表于 2026-8-19 10:26
ACC = PWMA_SR1;   //此时b2,b3为0
ACC &= ~b1;           //此时b2, b3出现1
PWMA_SR1 = ACC;   //回写0 ...

这写法不对,你再看看我在13#的代码,"="不是"&="。
这样吧,你去掉不相关的代码,工程传上来,告诉我测哪几个引脚就行。
回复

使用道具 举报 送花

已绑定手机

7

主题

411

回帖

6594

积分

论坛元老

积分
6594
发表于 2026-8-19 11:44:13 | 显示全部楼层
由于没有楼主的工程,自己动手移植了楼主的代码,验证了我的方案是可行的。
有BUG的工程与解决后的工程如下:
pwmtest-有BUG.rar (55.13 KB, 下载次数: 1)
pwmtest.rar (55.1 KB, 下载次数: 1)
pwmtest2.rar (54.9 KB, 下载次数: 1)
代码对比:
傲游截图20260819113736.jpg
另一种改法: sr1 = PWM1_SR1;    PWM1_SR1 = ~sr1;


傲游截图20260819124145.jpg
有BUG的波形:
傲游截图20260819114112.jpg
解决后的波形:
傲游截图20260819114120.jpg


点评

666 有图有真相  发表于 2026-8-27 09:14
回复

使用道具 举报 送花

已绑定手机

0

主题

72

回帖

895

积分

高级会员

积分
895
发表于 2026-8-27 00:04:06 | 显示全部楼层
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-22 06:03 , Processed in 0.080121 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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