将Keil工程文件移植到VScode+Platformio环境下

1创建工作空间

1.1创建PIO工程

若弹出报错不用管他(装加密软件的电脑会报错并少创建几个文件)。PIO会在我们选定的文件夹下创建名为Name(Project)的文件夹

打demo/Project文件夹可以看到生成一堆文件

1.2创建CubeMX工程

网上很多教程都让把CubeMX工程路径和PIO工程路径保持一致,而实际上最好不要放在一起,防止CubeMX更新工程时把我们修改过的文件篡改。

我们在demo文件夹下再新建一个文件夹(名字随便取不是中文就行),然后把需要移植的keil工程下的.ioc文件复制过来。

然后打开该.ioc文件选择Makefile然后生成文件

1.3整合文件

将CubeMX生成的Makefile文件、启动文件和FLASH.ld文件复制到PIO工程文件夹下(说白了如果别的工程已经有这三个文件就可以省略创建CubeMX工程并生成文件这一步)

将需要移植的keil工程下的Core文件夹(CubeMX生成的配置文件)和自定义的文件夹(应用程序)复制到PIO工程的src文件夹下

1.4拷贝c_cpp_properties.json、extensions.json和launch.json

正常情况下这三个文件可以自动生成也不需要修改,但是由于加密软件的原因需要从一个完整且单片机相匹配的工程里拷贝到自己的.vscode文件夹下(如果你的电脑加密了可以用一台没有加密软件的电脑来生成一个同样的工程),extensions.json和launch.json不需要修改,c_cpp_properties.json根据需求来修改(主要是修改需要引用的头文件路径)

2Platformio.ini文件配置

将下列配置添加到Platformio.ini文件中,并根据实际情况配置-Isrc下的路径。

复制代码
debug_tool = jlink            ;仿真器
upload_protocol = jlink       ;烧写工具

board_build.stm32cube.custom_config_header = yes;使用cubemx生成的配置文件

build_flags =
    -O0                          ;优化等级
    -Isrc/Core/Inc              ;cubemx生成的配置文件头文件路径
    -Isrc/HardWareSupport/Inc  ;自己写的文件头文件路径
board_build.ldscript = STM32F407VETx_FLASH.ld  ;指定使用该文件

3修改Makefile中的优化等级

4更改FLASH偏移地址和中断向量表偏移地址

打开STM32F407VETx_FLASH.ld文件然后按照下图修改,没有修改偏移地址的需求(有bootloader就需要改)就跳过该步骤

打开system_stm32f4xx.按照下图修改(如果已经通过别的方法更改了中断向量表就不用再改了)

注意:keil无论是调试还是正式运行,程序都是从0x8000000开始的,但是PIO调试仿佛是从flash的偏移地址开始的,正式运行是从0x8000000开始的。所以PIO在没有bootloader的情况下,flash即使偏移地址后也能调试仿真但不能正式运行。

5编译和调试

右键PIO的工程文件夹选择通过Code打开

若有弹窗就选是

等待一会,当PIO Home页面加载出来后就可以继续操作了

点击右上角的build进行编译

终端显示绿色success字样即为成功,按F5启动调试。

相关推荐
Java斌2 小时前
70年使用权的IntelliJ IDEA Ultimate安装教程
java·ide·intellij-idea
weixin_466485112 小时前
PyCharm中运行.py脚本程序
ide·python·pycharm
程序猿小D2 小时前
第14节 Node.js 全局对象
linux·前端·npm·node.js·编辑器·vim
aningxiaoxixi3 小时前
Android Studio 之基础代码解析
android·ide·android studio
想搞嵌入式的小白3 小时前
STM32 NVIC中断控制器
stm32·单片机·嵌入式硬件·nvic
芯片智造3 小时前
电镀机的阳极是什么材质?
经验分享
深圳市尚想信息技术有限公司4 小时前
【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析
单片机·嵌入式硬件
100分题库小程序4 小时前
汽车加气站操作工证考试重点
经验分享·笔记·安全
waterHBO4 小时前
一个小小的 flask app, 几个小工具,拼凑一下
javascript·vscode·python·flask·web app·agent mode·vibe coding
界面开发小八哥4 小时前
「Java EE开发指南」如何使用MyEclipse在Web项目中用Web Fragments?
java·前端·ide·java-ee·eclipse·myeclipse