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

Posted 青梅煮久

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAL库常见报错:烧录成功但是没有运行用户代码相关的知识,希望对你有一定的参考价值。


无论是HAL库工程还是标准库工程,在刚刚拿到别人给的工程,烧录一直可以成功,但是不运行用户程序,现象如下:
在这里插入图片描述
这个工程的代码已经成功烧录了,但是就是不运行这个工程,运行的是芯片中原有的代码

问题分析:

  1. 仔细看了上图的烧录过程,看看它的编译信息,比我自己CUBEMAX生成的其他工程多出了一些信息,正常工程编译信息如下:
    在这里插入图片描述
    它多出了:After Build - User command #1: C:\\Keil_v5\\ARM\\ARMCC\\bin\\fromelf.exe --bin --output=output\\TC_APP_FW_USER_2_V102.bin STM32F103RB_Nucleo\\TC_APP_FW_USER_2_V102.axf这个是IAP的功能,让工程生成BIN文件,用来做升级的。

    关于IAP的知识自行B站学习,这里不讲。
    学习视频:https://www.bilibili.com/video/BV1dC4y187JR?from=search&seid=16749691524608686385
    代码:http://www.ing10bbs.com/forum.php?mod=viewthread&tid=1458&extra=page%3D1
    (代码在硬石的F1里面,有基于HAL的)

  2. 只要知道这个是在flash中指定地址来运行代码的。因为我们的代码都是默认地址开始的(我们平时创建的都是采用默认地址开始运行,可以理解为BOOT工程),而这个工程其实就是在BOOT工程运行后跳转到的APP工程。

索嘎,那么我们改一下工程的启动地址就好了。

问题解决:

  1. 改地址。
    在这里插入图片描述
    果然有问题,地址的起始不对。F1的正确的如下:(其他型号的用cubemax随便生成一个工程就知道啦)
    在这里插入图片描述
  2. 还是改地址
    system_stm32f1xx.c中改VECT_TAB_OFFSET的值。
    在这里插入图片描述
    问题解决。

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

以上是关于HAL库常见报错:烧录成功但是没有运行用户代码的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

常见报错

一些运行深度学习代码常见报错(持续更新)