从mdk stm32cubemx切换到vscode stm32cubemx工作区同时打开bootloader和APP工程,修改flash和中断向量偏移
从原来使用mdk开发stm32切换为vscode开发记录一下操作,vscode天下第一!
一、在vscode工作区中同时打开boot工程和app工程
这个比较简单,而且很方便,同时打开2个工作可以切换活动工作区进行2个工程的编译切换
(1)点击vscode右上角文件->将文件夹添加到工作区,选择需要打开的工程,我这里先打开bootloader工程

(2)再次点击vscode右上角文件->将文件夹添加到工作区,选择另一个app工程

(3) 最后点击文件->将工作区另存为,命名为MotorFirmware,最后的结构如图

我们现在当前的活动工作区是stm32g4_app,在cmake上的构建分析器也可以看到elf文件的信息,现在的状态编译和下载都是操作app工程

如果我们想切换为bootloader工程,只需要切换vscode的活动工作区,选择对应的文件夹即可切换


在cmake插件下也可以看到对应的切换就完成啦

二、开发boot和app的存储分配,和flash起始地址修改
我现在开发使用的是stm32g431rbt6,ram是32K,flash是128K
我要开发bootlaoder和app,还有预留一点空间给存储信息使用
计划分配方案是:

Bootloader原本的起始地址已经是0x0800 0000了,只需要修改他的flash大小即可,在STM32G431XX_FLASH.ld中修改flash大小为32K
2026/7/26补充:
bootloader工程也需要找到system_stm32g4xx.c文件,
找到USER_VECT_TAB_ADDRESS,
取消他原本的注释
不然cmake中flash大小还会显示原来的128K大小

App就需要修改flash的起始地址和flash大小,还有中断向量偏移,不然少一步bootloader都无法正确跳转到App程序
在STM32G431XX_FLASH.ld中修改起始地址为0x08007000,flash大小为96K,这里不填满100K,剩余4K作为参数区

修改中断向量偏移,找到system_stm32g4xx.c文件,找到USER_VECT_TAB_ADDRESS,取消他原本的注释
最后在VECT_TAB_OFFSET中修改偏移地址为0x00007000U就完成了

最后一个内存4K的参数区,最简单的方式是在代码中固定地址:
#define PARAM_FLASH_ADDRESS 0x0801F000UL #define PARAM_FLASH_SIZE 0x1000UL
然后参数保存模块只擦除最后两页,stm32g431的一页大小是2K,我们可以做双页切换保存参数:
Page 62:0x0801F000~0x0801F7FF Page 63:0x0801F800~0x0801FFFF
到这里就完成啦,愉快的开发了

浙公网安备 33010602011771号