关于STC8A8K64D4单片机中15bit增强型PWM的 归零中断 问题
关于试验箱例程中 避免第一次开启PWM计数时 会触发一次归零中断的避免方法这里//PWMCEN写0再写1时, 会立即产生一个归零中断, 通过以下方法屏蔽掉这个中断
EA = 0;
PWMCFG = 0x05; //启动 PWM 模块, 使能计数器归零中断
_nop_();
_nop_();
PWMCFG &= ~0x08; //清标志位
EA = 1;是否可以理解为 关闭总中断后 开启PWM计数时 虽然归零标志位仍然会置位但是 由于关闭了总中断,清除了归零标志之后 再打开总中断也不会触发 PWM中断。。
那么基于以上理解,那是不是可以不用关闭总中断。 只是 不开启归零中断,在清除了归零标志位后再开启归零中断,,是否可以达到相同的效果。
PWMCFG |= PWMCEN; // 启动PWM 但不开启归零中断
_nop_();
_nop_();
PWMCFG &= ~PWMCBIF; // 清标志位
PWMCFG |= PWMCBIE; //开启归零中断
基本上,正常的开启中断都是: 清除中断标志,NOP(3); 开中断。
比如外中断INT0~INT4用于下降沿中断,在禁止终端期间,只要出现过下降沿,则中断标志就为1,一旦允许中断,马上进去,所以要先清除中断标志,NOP(3); 开中断。
同理,定时器也一样,一旦溢出,中断标志就会置1,开中断前,先清除标志,NOP(3); 再开中断。 梁工 发表于 2024-4-3 22:57
基本上,正常的开启中断都是: 清除中断标志,NOP(3); 开中断。
比如外中断INT0~INT4用于下降沿中断,在禁 ...
嗯嗯 虽然没有正面回答我的问题,,
但是梁工描述的和我理解的基本吻合,,
页:
[1]