将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启动调试。

相关推荐
专注VB编程开发20年10 分钟前
javascript的类,ES6模块写法在VSCODE中智能提示
开发语言·javascript·vscode
智者知已应修善业1 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
MediaTea4 小时前
Python 编辑器:Thonny
编辑器
孞㐑¥5 小时前
Linux之Socket 编程 UDP
linux·服务器·c++·经验分享·笔记·网络协议·udp
智商偏低7 小时前
单片机之helloworld
单片机·嵌入式硬件
June bug8 小时前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
青牛科技-Allen9 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森11 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白11 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D11 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程