2可能出现的异常
如果在执行NMI或HardFault处理程序时,或者在一个使用MSP的异常返回时出栈的却是PSR的时候系统产生一个总线错误,处理器进入一个锁定状态。当处理器处于锁定状态时,它不执行任何指令。处理器保持处于锁定状态,直到下面任何一种情况出现:
出现复位
调试器将锁定状态终止,出现中止仿真的现象
出现一个NMI,以及当前的锁定处于HardFault处理程序中
注意:如果锁定状态出现在NMI处理程序中,后面的NMI就无法使处理器离开锁定状态。
在应用程序中,处理器处于锁定状态,会一直在void HardFault_Handler(void)函数中执行。
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
下面将在MM32F0130上运行的数组越界代码为例,具体阐述定位步骤:
void StackTest(void)
{
int data[3],i;
for(i=0; i<10000; i++)
{
data[i]=1;
}
}
|