STM32G0在使用BootLoader后应用程序不能正常跳转的解决办法

前提条件:app独自运行没有问题,初始化或者长时间运行都不会跑飞;但是加入bootloader后主程序出现异常。
程序框架:
0x08000000 ~ 0x08003000 :bootloader占用;
0x08003000 ~ 最大: app占用;
通过查阅资料发现是APP应用程序起始地址修改后中断向量表没有重映射,在APP进入main函数前会先执行system_stm32xxxx.c中的SystemInit这个函数,函数内的中断向量映射地址赋值为
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
其中FLASH_BASE 就是默认程序起始地址0x8000000,VECT_TAB_OFFSET偏移地址默认为0;
现在整个APP的地址偏移0x3000,因此将VECT_TAB_OFFSET修改为0x3000后重新烧录运行程序功能都OK了。
注:
在这里插入图片描述
若看到没有定义USER_VECT_TAB_ADDRESS,则把上面一行的/* #defiene USER_VECT_TAB_ADDRESS */改为
#defiene USER_VECT_TAB_ADDRESS即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值