-1
我想禁止一些代碼段的BusFault出口的上升。我想有可能使異常上升的標誌,但不會增加任何類型的處理程序。編程手冊(PM0214,p.230)中對BFHFNMIGN位的描述與我正在查找的內容完全相同:「使優先級爲-1或-2的處理程序忽略由加載和存儲指令導致的數據總線故障< ..> 」。 這是我的嘗試:如何選擇性地禁用BusFault異常並將其升級到HardFault,並啓用其他異常?
SCB->SHCSR ^= SCB_SHCSR_BUSFAULTENA_Msk; //Disable only BusFault_Handler
SCB->CCR |= SCB_CCR_BFHFNMIGN_Msk; //Enable BFHFNMIGN
*(uint32_t *)(0x000FFFFE) = 0xAA; //Test if BFHFNMIGN flag works
i+=1; //Any stuff
我希望執行走得更遠,但「任何東西」行之後,如果我沒有用過BFHFNMIGN位執行獲取到HardFault_Handler。在調試器的幫助下,我通過地址來檢查BFHFNMIGN位是否已設置,並且其他寄存器中是否存在BusFault的所有屬性。 那麼爲什麼HardFault不會忽略BusFault?
您是否正在測試此代碼_in_異常處理程序? –
當然不是。問題是我不想去異常處理程序。 – Morriell
然後再閱讀說明,並期待其他人查看您的問題。 –