在stm32调试中有时候会进入硬件异常中断HardFault_Handler。SEGGER公司(旗下有大名鼎鼎的emWin图形工具)提供一种硬件异常中断HardFault_Handler定位调试方法。在MDK和IAR开发环境都适用。 这里,我们在MDK开发环境上记录一次调试经历。
1、硬件异常案例
主函数是对按键K1和摇杆OK的接收处理操作,如伪代码1
伪代码1int main(void)
{
//按键初始化函数
key_init();
//键值读取函数
switch(get_keyVaule())
{
case KEY_DOWN_K1: /* K1键按下 */
{
printf("K1键按下\r\n");
volatile unsigned int* p;
unsigned int n;
p = (unsigned int*)0xCCCCCCCC;
n = *p;
(void)n;
}
break;
case JOY_DOWN_OK: /* 摇杆OK键按下 */
printf("摇杆OK键按下\r\n");
break;
default:
/* 其它的键值不处理 */
break;
}
}
下载后程序正常运行,但当按下按键K1时候就进入硬件异常中断,那么怎么定位硬件异常的问题点呢?这就要用到SEGGER公司(旗下有大名鼎鼎的emWin图形工具)提供的一种硬件异常中断HardFault_Handler定位调试方法。
2、移