HAL库常见报错:烧录成功但是没有运行用户代码
Posted 青梅煮久
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAL库常见报错:烧录成功但是没有运行用户代码相关的知识,希望对你有一定的参考价值。
无论是HAL库工程
还是标准库工程
,在刚刚拿到别人给的工程,烧录一直可以成功
,但是不运行用户程序
,现象如下:
这个工程的代码已经成功烧录了,但是就是不运行这个工程,运行的是芯片中原有的代码。
问题分析:
-
仔细看了上图的烧录过程,看看它的编译信息,比我自己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的) -
只要知道这个是在flash中指定地址来运行代码的。因为我们的代码都是默认地址开始的(我们平时创建的都是采用默认地址开始运行,可以理解为BOOT工程),而这个工程其实就是在BOOT工程运行后跳转到的APP工程。
索嘎,那么我们改一下工程的启动地址就好了。
问题解决:
- 改地址。
果然有问题,地址的起始不对。F1的正确的如下:(其他型号的用cubemax随便生成一个工程就知道啦)
- 还是改地址
在system_stm32f1xx.c
中改VECT_TAB_OFFSET
的值。
问题解决。
• 由 青梅煮久 写于 2021 年 06 月 01 日
以上是关于HAL库常见报错:烧录成功但是没有运行用户代码的主要内容,如果未能解决你的问题,请参考以下文章
HAL库常见报错:error: #20: identifier “HAL_StatusTypeDef“ is undefined
HAL库常见报错:error: #20: identifier “HAL_StatusTypeDef“ is undefined