找回密码
 立即注册
查看: 738|回复: 3

关于STC8H的PWM的一些疑问

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-29 20:41:02

1

主题

3

回帖

37

积分

新手上路

积分
37
发表于 2023-6-1 18:21:10 | 显示全部楼层 |阅读模式
本帖最后由 飞羽 于 2023-6-1 18:21 编辑

现象:设置了PWMA中的PWM3的功能输出,PWM波形输出正常,在未开启CC3IE标志位,开启了CC2IE标志位(大意写错了)
发现在PWMA中断的CC3IF还是会被置1
如下图的P34会被翻转输出
关于STC8H的PWM的一些疑问-1.png


问题:按理在CC3IE为使能情况下,CC3IF理应不会有置1的情况,为什么还是会被置而响应中断?
(我又试了使能CC1IE和CC2IE,一样出现CC3IF出现响应置1)

补充:PWMA_IER = 0x02;(在keil中使能CC1IE的语句),PWM3设置成输出PWM模式,采用向上计数


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-6-1 21:49:40 | 显示全部楼层
本帖最后由 梁工 于 2023-6-2 10:45 编辑

当计数值与比较值匹配时会将比较标志置位,但不会发起中断。而进入中断后去查询,则会发现此位为1。
所以,我再允许中断时,用一个变量来标记允许了哪个中断,读取中断标志时,与运算一下即可。
初始化最后:
        PWMA_ISR_En = PWMA_IER;        //设置标志允许通道1~4中断处理
中断中处理:
        u8        sr1;
        sr1 = PWMA_SR1;        //为了快速, 中断标志用一个局部变量处理
        PWMA_SR1 = 0;        //清除中断标志
        PWMA_SR2 = 0;        //清除中断标志
        sr1 &= PWMA_ISR_En;        //每个通道可以单独允许中断处理

        if(sr1 & 0x02)        //通道1中断
        {
        }
        if(sr1 & 0x04)        //通道2中断
        {
        }
        if(sr1 & 0x08)        //通道3中断
        {
        }
        if(sr1 & 0x10)        //通道4中断
        {
        }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-29 20:41:02

1

主题

3

回帖

37

积分

新手上路

积分
37
发表于 2023-6-2 09:55:02 | 显示全部楼层
梁*** 发表于 2023-6-1 21:49
档计数值与比较值匹配时会将比较标志置位,但不会发起中断。而进入中断后去查询,则会发现此位为1。
所以, ...

了解,也就是我不使能中断,但计数值和比较值也会置1中断标记,导致其他中断响应后,也会认为执行触发

点评

是的,所以要像我的程序那样,将SR1读出来后,屏蔽掉没有允许的中断标志。  详情 回复 发表于 2023-6-2 10:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-6-2 10:46:31 | 显示全部楼层
飞*** 发表于 2023-6-2 09:55
了解,也就是我不使能中断,但计数值和比较值也会置1中断标记,导致其他中断响应后,也会认为执行触发 ...

是的,所以要像我的程序那样,将SR1读出来后,屏蔽掉没有允许的中断标志。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 15:11 , Processed in 0.221831 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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