本帖最后由 芯圣电子官方QQ 于 2023-7-25 14:15 编辑
最近在使用芯圣HC89S003F4时,在使用官方INT1掉电唤醒例程中,无论如何都无法完全唤醒MCU,经厂方查看程序,调试,很快找出原因,由于INT1不是最高优先级,所以唤醒没有成功,后来将INT1的优先级设为最高,就一切正常了。 估计原因是:INT1不是最高优先级,唤醒启动后就被更高优先级的抢去了控制权,就是和和各种中断打架去了,最后谁也干不成活。
IP0 |= 0X30; //INT1优先级设为最高,唤醒用的中断一定要设为最高优先级。否则有可能唤醒不成功
留做自勉。
补充一下, 上面的问题是因为在低级别中断里执行了掉电命令,由于级别不够,造成唤醒不成功,故要设置最高级中断。 有时序的东西最好不要放到中断执行 如果是在main函数里进入掉电模式,就可以不用设置最高优先级, bit PD_flag;
main()
{
while(PD_flag)
{
PCON |= 0x02; //进入掉电模式
PD_flag=0;
}
}
其他函数给 PD_flag赋值, T0_INT()
{
if(.......)
{
PD_flag=1;
}
}
经试验可行
|