進(jìn)入中斷服務(wù)程序后,LR(R14)寄存器的值會(huì )被更新為特殊的值'EXC_RETURN’(原來(lái)的值已壓入堆棧);執行完中斷服務(wù)程序后,只要把這個(gè)值送往PC,就會(huì )啟動(dòng)中斷返回序列;
EXC_RETURN位段如下:
| bits | - |
|---|---|
| bit[31:4] | EXC_RETURN的標識,全為1 |
| bit[3] | 0表示返回后進(jìn)入handler模式,1表示返回后進(jìn)入線(xiàn)程模式 |
| bit[2] | 0表示返回后使用MSP,1表示返回后使用PSP |
| bit[1] | 保留 |
| bit[0] | 0表示返回ARM狀態(tài),1表示返回thumb狀態(tài),CM3中必須為1 |
合法的EXC_RETURN值
0xffffffff1 : 返回handler模式
0xffffffff9 : 返回線(xiàn)程模式,并使用MSP
0xffffffffd : 返回線(xiàn)程模式,并使用PSP
如果在線(xiàn)程模式,且使用MSP時(shí)被中斷,中斷服務(wù)例程中EXC_RETURN=0xfffffff9;
如果在線(xiàn)程模式,且使用PSP時(shí)被中斷,中斷服務(wù)例程中EXC_RETURN=0xfffffffd;
如果在handler模式時(shí)被中斷,中斷服務(wù)例程中EXC_RETURN=0xfffffff1;
聯(lián)系客服