STM32F103系列配置中断向量表偏移(Keil/STM32CubeIDE)

需要在flash中添加bootloader的话,需要对flash进行分区,即bootloader区和app区(程序运行区),主要记录在 Keil 平台和 STM32CubeIDE平台 上的中断向量表偏移配置,以偏移 0x2800 为例,即预留10k大小的空间给bootloader


Keil
修改flash起始地址

打开工程魔术棒,Target→IROM1,填入flash起始地址为 0x8000000 偏移 0x2800 后的 0x8002800 ,芯片flash大小是 256k(0x40000),需要减掉偏移量 0x2800 之后是 0x3D800
在这里插入图片描述

修改中断向量表偏移

打开 system_stm32f1xx.c 文件(注意该工程由 CubeMX 配置而来),在其96行左右的宏定义 USER_VECT_TAB_ADDRESS 默认是注释掉的,把注释删了,在98行有这个宏的定义判断
在这里插入图片描述如果程序要运行在SRAM则取消101行注释并修改SRAM的相关偏移量,否则则是使用下面flash相关的宏配置,110行中断向量的偏移量和Flash起始位置偏移量是一样的为 0x00002800U
在这里插入图片描述编译工程后进入Debug调试模式,打开内存监视器,在 0x8000000 地址开始都是 0xFF (无数据写入时都默认是 0xFF ),这里还没写入bootloader,所以可见程序烧录后不在 0x8000000 地址上
在这里插入图片描述找到监视器上地址 0x8002800 的内容,可看到烧录的固件在flash的 0x8002800 地址,当bootloader中跳转PC指针到 0x8002800 地址时,将运行app程序
在这里插入图片描述

STM32CubeIDE
修改flash起始地址

打开链接脚本文件 STM32F103VCTX_FLASH.ld ,基本都是 *.ld 结尾的文件,在FLASH一行修改 ORIGIN flash起始地址为 0x8002800LENGTH 是FLASH剩余长度,原256k,给了10k bootloader,剩下246k
在这里插入图片描述

修改中断向量表偏移

同样是打开 system_stm32f1xx.c 文件,取消宏 USER_VECT_TAB_ADDRESS 的注释,修改偏移量为 0x00002800U
在这里插入图片描述
进行编译烧录,然后打开 Build Analyzer → Memory Regions 查看FLASH的使用情况,可以看到起始地址为 0x8002800 ,大小246KB,包括程序使用大小和剩余大小
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GenCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值