我的程序总会在运行一段时间后(有时候半小时或者一小时),进入HardFault_Handler函数,然后就死机了。
在网上查找了下,其原因无非就是
1.内存溢出或者数组访问越界
2.堆栈溢出
通过调试 发现程序在运行下面程序后,进入了hardfault handler
u16 USART2_RX_STA=0;
u8 USART2_RX_BUF[1024];
u8* GSM_check_cmd(u8 *str) //字符串比较函数
{
char *strx=0;
if(USART2_RX_STA&0X8000) //接收到一次数据了
{
USART2_RX_BUF[USART2_RX_STA&0X3FF]=0;//添加结束符
strx=strstr((const char*)USART2_RX_BUF,(const char*)str);
}
return (u8*)strx;
}
感觉这个函数是没有问题的啊,为啥会进入hardfault handler
|