近期在開(kāi)發(fā)過(guò)程中,嘗試了中斷嵌套的一些實(shí)驗(yàn),有些地方感覺(jué)到有點(diǎn)疑惑,實(shí)驗(yàn)情況如下:
啟動(dòng)匯編文件中,CSR寄存器設(shè)定為“0x1F”,按照《QingkeV4》手冊(cè),這個(gè)是4級(jí)嵌套,硬件壓棧,高優(yōu)先級(jí)的中斷處理函數(shù)配置為軟件壓棧,低優(yōu)先級(jí)配置為硬件壓棧。
啟用“SysTick”,“Software”,“Uart1”三個(gè)中斷處理函數(shù)。均設(shè)定為硬件壓棧(“Software”來(lái)自RTT的匯編源代碼,我看不出來(lái)是不是啟用了硬件壓棧)。軟件有使用RT-Thread操作系統(tǒng)。
現(xiàn)在的實(shí)驗(yàn)結(jié)果是:
NVIC_SetPriority(Software_IRQn, 0xE0);??NVIC_SetPriority(USART1_IRQn, 0x00); 時(shí),系統(tǒng)正常。
NVIC_SetPriority(Software_IRQn,?0x00);??NVIC_SetPriority(USART1_IRQn,?0xE0); 時(shí),系統(tǒng)啟動(dòng)正常,但當(dāng)串口中斷發(fā)生之后,系統(tǒng)掛死。
多次修改數(shù)據(jù)實(shí)驗(yàn)之后,發(fā)現(xiàn),只要“Software”中斷的等級(jí)調(diào)高(比串口中斷的優(yōu)先級(jí)更高),那么系統(tǒng)啟動(dòng)正常,串口中斷發(fā)生后,必定掛死。不知道是什么原因呢?可否得到一些講解?謝謝。