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

devtools/2024/10/21 11:46:08/

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启动调试。
在这里插入图片描述


http://www.ppmy.cn/devtools/103923.html

相关文章

数据库课程设计mysql

数据库课程设计是一个综合性的过程,它涉及到需求分析、概念设计、逻辑设计、物理设计、实现、测试以及维护等多个阶段。在这里,我将以MySQL为例,详细阐述一个假设的数据库课程设计过程,内容将涵盖从需求分析到实现的具体步骤&…

56基于SpringBoot+Vue+uniapp的教学资源库的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录 前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus 系统测试系统测试目的系统功能测试系统测试结论 为什么选择我代码参考数据库参考源码获取源码获取 前言 🌞博主介绍 :✌全网粉丝15W,CSDN特邀作者、21…

如何让私域服务赢得用户的心?

私域流量的概念在当今的商业环境中已经变得极为重要,许多品牌和企业都投入大量资源尝试通过各种策略吸引并保留用户。然而,单纯的流量积累并不足以确保商业成功。当面对用户的沉默、缺乏活跃度以及无法变现的困境时,我们必须重新审视私域流量…

Apache + Tomcat + ajp 协议配置

前端 web 服务器使用 apache 的好处就不在赘述,这里重点讲一下如何使用 ajp 协议和 http 协议与后端 tomcat 服务器通信的区别。 apache作为代理服务器可以使用 http 协议与后端 tomcat 服务器进行通信,也可以使用 ajp 协议与 tomcat 通信。两者的主要区…

Linux和Unix的区别及为什么鸿蒙系统不用Unix的原因

目录 Linux是什么? Unix是什么? 他们的区别: 鸿蒙系统介绍及鸿蒙系统不用Unix的原因 Linux是什么? Linux的历史可以追溯到1991年,由芬兰的计算机科学家林纳斯托瓦兹(Linus Torvalds)为了学习操作系统的工作原理而…

Spring - boot

Spring Boot 是一个用于快速开发基于 Spring 框架的独立应用程序的工具。它简化了 Spring 应用的搭建和开发过程,使开发者能够更加专注于业务逻辑的实现。以下是一个简单的 Spring Boot 示例及介绍: 一、Spring Boot 示例 创建项目 可以使用 Spring Ini…

Java和C#哪个更适合大型项目?

Java和C#都是非常流行的编程语言,它们各自具有独特的优势,适用于不同类型的大型项目。以下是对两者在大型项目中的适用性进行的详细分析: Java 跨平台支持:Java具有天然的跨平台性,其源代码可以在任何支持Java虚拟机…

golang uint8 转int出现ascll码值

在Golang中,uint8类型被用来表示ASCII码值。 结果是51 如果是uint8(3)的话结果还是3 所以在我们想把一个uint8类型的字符数字转换为int类型时需要特殊处理 减去对应ASCII码’0’的值 结果就是3了