|
我们经常会看到类似这种的代码:
- if (HAL_TIM_Base_DeInit(&TimHandle) != HAL_OK)
- {
- Error_Handler(__FILE__, __LINE__);
- }
-
- if (HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
- {
- Error_Handler(__FILE__, __LINE__);
- }
复制代码
而Error_Handler的实现如下:
- /*
- *********************************************************************************************************
- * 函 数 名: Error_Handler
- * 形 参: file : 源代码文件名称。关键字 __FILE__ 表示源代码文件名。
- * line :代码行号。关键字 __LINE__ 表示源代码行号
- * 返 回 值: 无
- * Error_Handler(__FILE__, __LINE__);
- *********************************************************************************************************
- */
- void Error_Handler(char *file, uint32_t line)
- {
- /*
- 用户可以添加自己的代码报告源代码文件名和代码行号,比如将错误文件和行号打印到串口
- printf("Wrong parameters value: file %s on line %d\r\n", file, line)
- */
-
- /* 这是一个死循环,断言失败时程序会在此处死机,以便于用户查错 */
- if (line == 0)
- {
- return;
- }
-
- while(1)
- {
- }
- }
复制代码
通过打印的方式来查看死机的位置,非常不方便,这里可以考虑采用软件断点,调试状态全速运行,如果出现错误会直接卡在配置错误的地方,用户此时再单步就可以方便看到出错位置。
详情看下面的帖子:
关于DAPLINK调试支持的硬件断点个数和软件断点个数
https://forum.anfulai.cn/forum.php?m ... d=101831&fromuid=58
(出处: 硬汉嵌入式论坛)
|
|