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


无论是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 日

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值