This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

指令总线错误,IBUS被置位



程序从复位执行若干时间后(5分钟以上),会进入FaultISR(),进入的时间不定。而在使用调试器运行时则不会出现这种情况。因此我修改FaultISR(),追踪状况。

static void
FaultISR(void)
{
char string[64];
uint32_t HFaultStat = HWREG(NVIC_HFAULT_STAT);
uint32_t FaultStat = HWREG(NVIC_FAULT_STAT);
uint32_t MmAddr = HWREG(NVIC_MM_ADDR);
SystemDelay(0.01);   //串口的波特率为115200,故延时0.01秒,以留够足够时间发完上次数据。
sprintf(string,"%x,%x,%x\n", HFaultStat,FaultStat,MmAddr);
int length = strlen(string);
for(int i=0;i<length;i++)
ROM_UARTCharPutNonBlocking(UART_COMPUTER_BASE, (uint8_t)string[i]);
}

重复接收到的数据:40000000,100,e000

也就是寄存器HFAULTSTAT = 0x40000000,FAULTSTAT = 0x100,MMADDR = 0xE000.

查数据 手册得知是出现了指令总线错误,IBUS被置位

datasheet里关于这个错误的信息太少,请帮忙分析可能原因,另外,这种错误是否可以被清除?该采用什么顺序清除?