关于STC8H的PWM的一些疑问
本帖最后由 飞羽 于 2023-6-1 18:21 编辑现象:设置了PWMA中的PWM3的功能输出,PWM波形输出正常,在未开启CC3IE标志位,开启了CC2IE标志位(大意写错了)
发现在PWMA中断的CC3IF还是会被置1
如下图的P34会被翻转输出
问题:按理在CC3IE为使能情况下,CC3IF理应不会有置1的情况,为什么还是会被置而响应中断?
(我又试了使能CC1IE和CC2IE,一样出现CC3IF出现响应置1)
补充:PWMA_IER = 0x02;(在keil中使能CC1IE的语句),PWM3设置成输出PWM模式,采用向上计数
本帖最后由 梁工 于 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中断
{
}
梁工 发表于 2023-6-1 21:49
档计数值与比较值匹配时会将比较标志置位,但不会发起中断。而进入中断后去查询,则会发现此位为1。
所以, ...
了解,也就是我不使能中断,但计数值和比较值也会置1中断标记,导致其他中断响应后,也会认为执行触发 飞羽 发表于 2023-6-2 09:55
了解,也就是我不使能中断,但计数值和比较值也会置1中断标记,导致其他中断响应后,也会认为执行触发 ...
是的,所以要像我的程序那样,将SR1读出来后,屏蔽掉没有允许的中断标志。
页:
[1]