天天看點

最高優先級和單片機喚醒的關系

最近在使用芯聖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;

               }

}

經試驗可行

繼續閱讀