死循环还是不要到处写比较好,我的错误处理统一引到两个函数,这样就算出错误也可以依据实际情况调整这两个函数进行排查
[C] 纯文本查看 复制代码 /**
* @brief 软件产生错误的时候将跳转到这里,将错误信息存入存储介质,不进行循环
* @param file 源代码文件名
* @param line 代码行号
*/
uint32_t SoftErrorHandler(char *file, uint32_t line)
{
/* TODO : 代码报告源代码文件名和代码行号存入存储介质 */
uint8_t StrSend[30];
uint8_t StrSendLen;
UartWrite(&tUart1, (uint8_t *)"Wrong parameters value: file ", sizeof("Wrong parameters value: file"));
UartWrite(&tUart1, (uint8_t *)file, String4Len((uint8_t *)file));
UartWrite(&tUart1, (uint8_t *)" line", sizeof(" line"));
StrSendLen = LIB_NumToAscii(line, 0, 0, StrSend);
UartWrite(&tUart1, StrSend, StrSendLen);
UartWrite(&tUart1, (uint8_t *)"\n", 1);
return 0;
}
/**
* @brief 硬件产生错误的时候将跳转到这里,将错误信息存入存储介质,并进行死循环
* @param file 源代码文件名
* @param line 代码行号
*/
void HardErrorHandler(char *file, uint32_t line)
{
/* TODO : 代码报告源代码文件名和代码行号存入存储介质 */
uint8_t StrSend[30];
uint8_t StrSendLen;
UartWrite(&tUart1, (uint8_t *)"Wrong parameters value: file ", sizeof("Wrong parameters value: file"));
UartWrite(&tUart1, (uint8_t *)file, String4Len((uint8_t *)file));
UartWrite(&tUart1, (uint8_t *)" line", sizeof(" line"));
StrSendLen = LIB_NumToAscii(line, 0, 0, StrSend);
UartWrite(&tUart1, StrSend, StrSendLen);
UartWrite(&tUart1, (uint8_t *)"\n", 1);
if(line == 0)
{
return;
}
while(1)
{
}
} |