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

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

               }

}


經試驗可行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章