使用J-LINK调试器触发异常后,故障分析器窗口通常会显示异常期间的寄存器内容。但若使用ST-LINK适配器时,"Register Value During Fault Exception"会显示为N/A(不可用)。 当处理器正在执行RTOS任务(使用PSP指针)时发生异常,调试窗口中的值无法正确显示。由于处理器进入异常处理程序时会自动切换为MSP指针,此时调试窗口的函数调用栈会出现错误——调试器似乎采用了当前SP值(即MSP),而非异常发生前的SP值(即PSP)。
临时解决方案:在异常处理程序中添加代码,当检测到异常前使用PSP时临时将SP切换为PSP指针,并在处理器切换回MSP之前设置断点。这样调试窗口就能正确显示函数调用栈。此时若在调试窗口点击函数名称,变量窗口也能正常显示该函数的局部变量。
|