HAL库常见报错:程序跑飞后使用Debug定位问题点

Posted 青梅煮久

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAL库常见报错:程序跑飞后使用Debug定位问题点相关的知识,希望对你有一定的参考价值。


无论是HAL库工程还是标准库工程,在刚刚拿到别人给的工程,进行芯片替换,开发板103VE跑的好好的,103RC就跑飞了,此时用串口打印定位不方便,因为代码都没跑到串口初始化就飞了起来了(比如时钟、IO口配置都出问题),或是打印也分析定位不了问题(比如跑到某个中断死在里面),定位过程如下:

一、初始化都不能完成的问题定位

  1. 程序烧录后(烧录工具我用的ST-LINK,烧完就连着),进入debug。
    在这里插入图片描述
  2. 确认工程可以运行到main。
    在这里插入图片描述
  3. 一步一步打断点判断程序是否可以跑到断点处。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 定位到了,退出debug。
    在这里插入图片描述

二、运行的中途崩溃或者跑进中断死循环

这个问题我们举个栗子,我有一块STM32F107VC板子它定时使用CAN发送数据(0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88)给另一块STM32F103RC板子,而STM32F103RC板子使用串口1打印,并将串口1收到的数据使用CAN发送给STM32F107VC板子,也顺便将串口1收到的数据通过串口发送函数,再从串口1发出来。(这里本来是想要串口1收到的数据发给串口2,这里方便看就让他又通过串口1发出来

我们看一下遇到的问题的定位过程:

  1. 发现问题。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 定位问题。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 解决问题(百度一下这里是什么)。
    在这里插入图片描述
    行吧,那是我freertos任务小了,我加大任务空间或者把任务里面创建的变量放外边去。
    在这里插入图片描述
    问题解决。

• 由 青梅煮久 写于 2021 年 06 月 01 日

以上是关于HAL库常见报错:程序跑飞后使用Debug定位问题点的主要内容,如果未能解决你的问题,请参考以下文章

HAL库常见报错:烧录成功但是没有运行用户代码

HAL库常见报错:烧录成功但是没有运行用户代码

HAL库常见报错:error: #20: identifier “HAL_StatusTypeDef“ is undefined

HAL库常见报错:error: #20: identifier “HAL_StatusTypeDef“ is undefined

Zabbix 常见报错

嵌入式程序跑飞源头定位方法