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

关于STC8H的PWM的一些疑问

[复制链接]
  • TA的每日心情
    开心
    2023-11-29 20:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    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模式,采用向上计数


    回复 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3124

    回帖

    7049

    积分

    超级版主

    积分
    7049
    发表于 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中断
            {
            }
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2023-11-29 20:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    3

    回帖

    37

    积分

    新手上路

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

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

    点评

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

    使用道具 举报

    该用户从未签到

    46

    主题

    3124

    回帖

    7049

    积分

    超级版主

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-3 07:12 , Processed in 0.063151 second(s), 49 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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