最佳在使用芯聖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;
}
}
經試驗可行