基于VsCode platformio的stm32开发环境搭建


背景

VsCode作为当下流行的编辑器,且不单单是一个编辑器里面集成了很多插件,使用这些插件可以完成很多功能。
STM32开发环境除了KEIL与IAR,其实还有很多其他的开方方式,ST官方提供了很多的开发软件,基于Eclipse也可以搭建一套,使用VsCode配合其他编译链接工具也可以实现操作,当然还有很多种方式进行开发。
使用VsCode的Platformio的插件,可以直接配置所需的一些底层的编译链接工具,使用的也是arm-gcc,用户可以省去一些操作,同时减少开发可能会遇到一些问题。
同时VsCode配合Platformio也是免费开源的的一套工具,对使用者来说也是一种福音。

开发环境搭建

安装VsCode

在官网下载即可

在VsCode的Extensions搜索添安装PlatformIO IDE即可,PlatformIO依赖于python,需要先安装,同时将python加到环境变量之中。

安装 Python 解释器

PlatformIO Core (CLI) 是用 Python 编写的,它 默认安装在除 Windows 之外的所有常用操作系统上。

请导航到官方网站并下载最新的 Python 并安装它。请阅读下面的注释

对于Linux的:

大多数 linux 发行版已经包含 Python 安装。您可能需要确保已安装 Python 虚拟环境。

Debian/Ubuntu 衍生产品在 Apt 中将此软件包作为 .python-venv

sudo apt install python3-venv

应该就足够了。

(其实导入工程文件夹的时候,工程自动会引导安装PlatformIO的相关依赖,提示点击安装,跳转网页复制sudo apt install python3.8-venv指令就好到终端回车,即可自动安装)

必要时换源,服务器根据服务器到你的位置而定

这里用阿里云,滑动找到清华云“http://mirrors.tuna.tsinghua.edu.cn/ubuntu”的服务器 

macOS 的:

请阅读安装过程中显示的“重要信息”以获取信息 关于 SSL/TLS 证书验证和运行 Install Certificates.command”。

如果您不安装 SSL/TLS 证书,PlatformIO 将无法下载 依赖的包、库和工具链。

Windows系统:

请选择(见下文),否则,命令将 不可用。Add Python to Pathpython

25c67d330e99404ab61c822640313e76.png

在下载python完成之后安装时候,选择Install Now,一定要勾选Add_Python to PATH,防止手工添加环境变量,正常情况下会有以下两个环境变量:

fab852d42b4146e9854146c547f2604c.png

安装好python后需要验证一下安装是否正常,安装完成后在终端中使用命令行

快捷键 Windows+R  输入 poworshell进入指令页面

912b82bd5e1c4429926eb460b467709d.png

先后输入两个指令

python --version
pip --version

会得到如下信息证明Python安装成功

57dcb48a78ec4885b9645e3d2e27355a.png

这一步就折腾了我一整天,起初是用的清华pip源,结果一直报错,排查了全部流程,然后发现换了个阿里pip源之后一切问题都解决了

在C:\Users\(这个文件夹名是用户名)\pip的目录下,用文本工具新建pip.ini

例如:我是在C:\Users\Administrator\pip目录下,新建了pip.ini

73b10da1f37c49a48aa9612816b0f13a.png
如果用户名目录无效,改到appdata目录

7f09df1d203b40cea88c894417e86c1d.png

在pip.ini内填入

[global]
# 超时时间,可自行调整
timeout = 6000
# 源地址
index-url = http://mirrors.aliyun.com/pypi/simple/
# 添加源主机为可信主机,要不然可能报错
trusted-host = mirrors.aliyun.com

国内常用pip源如下:

(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/

查看配置是否成功

pip config list

这一步也很关键,更新pip为最新版 

pip install --upgrade pip

如果报错,则按照提示 

pip install --user --upgrade pip

安装Platformio插件

 VSCode配置
打开vscode按照下图安装platformio

83a9982efd2d4164b2d0044a86c68b3d.png
安装后可以看到下面会有个进度条开始安装不同的插件,忽然到某一个瞬间,进度条就会停在下图的位置不动,这是可以打开控制台来查看报错信息。来确定问题。

c4b2d02351c243fdb26330d895a11661.png

在菜单点击”help“->"Toggle Developper Tools"菜单,选择”console“标签。

4435b1a62c084523b8cd12e60c4f3577.png
这是你会发现这个部分显示了很多信息,有错误有警告,不要担心,我们一点点看。这个其实是个自动安装的过程

0a75e259040c4c25a7de7329e8704967.png
如果这个过程太漫长而且没有任何变化,好像又没有报错,你可以打开下面的这个文件夹。你可以看到这里慢慢的在增加文件数量。看到下面这样了 基本就是安装ok的

8fdd4794cd6943fbb3de68d98cb71664.png

最终,在磨砺的驱使下,安装成功

75e9eb4968c14e4fa021c876a5833d0d.png

安装成功后,vscode会提示你重启~ 重启后就会像下面这样有一个小蚂蚁。

0d35bcc6580049f99e22efd5a2f61b83.png

新建工程

8864a7611b924c5c14d86ab7ddc0d391.png


 

0260ffdc1c9fe3d4144745216fb4527a.png


可以选择自己所需的路径,不采用默认的文件存放位置,使用HAL库选择STM32CUBE库即可。

默认文件分布

系统自动生成工程之后,会有一个默认的文件分布,而编译时,只会编译src中的源文件。可以选择将需要编译的文件都移入src之中。
不过这种方式不是很灵活,因此将采用在platformio.ini的配置之中添加所需的编译目录与文件。

编译

新建工程的时候选择了stm32cube这个库,因此我们的工程里面可以不添加hal库的官方代码。
只需添加stm32cube为用户生成的代码,与其他用户自行添加的代码进入编译即可,在链接的时候platformio会自动进行链接。
可以在platformio.ini文件中添加include路径与src的文件
build_flags, include的路径是工程目录,而src_filter的默认路径是src文件夹,此处没有找到合理的依赖

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = stm32cube
build_flags = -I src/Core/Inc-I src/USB_DEVICE/Target-I src/USB_DEVICE/App-I src/Bsp
src_filter =+<Core/src>+<USB_DEVICE/Target>+<USB_DEVICE/App>+<Bsp>

添加路径之后,直接点击左下角的勾进行build,或者在platformio界面点击Build进行编译
 

0ac17075b26e6226301ab593c0f6bc94.png


这样显示就可以表示编译成功,不过编译成功并不代表程序可以正常运行,有时因为路径上少了一部分代码,也可以编译成功,不过不能正常工作。

生成hex文件

编译成功后会默认会成bin文件,不会生成hex文件,需要手动添加python脚本来生成hex文件
脚本如下,保存为文件名extra_script.py当然其他文件名也是可以的。

Import("env")env.AddPostAction("$BUILD_DIR/${PROGNAME}.elf",env.VerboseAction(" ".join(["$OBJCOPY", "-O", "ihex", "-R", ".eeprom","$BUILD_DIR/${PROGNAME}.elf", "$BUILD_DIR/${PROGNAME}.hex"]), "Building $BUILD_DIR/${PROGNAME}.hex")
)

在platformio.ini文件中添加

extra_scripts = extra_script.py

在编译完成之后会自动调用这个转换脚本,生成hex输出文件

在线调试

在platformio.ini中添加相似的调试器即参数即可,如stlink,然后在debug界面下,开始即可。第一次调试可能需要下载相关的驱动及文件时间会长一些。

debug_tool = stlink

374666cf3e7bc7103da84dc24dc5821f.png

调试小插曲

相同的线路板在调试的时候,使用jlink能用,而使用stlink的时候不能使用
错误提示UNEXPECTED idcode : 0x2ba01477
原因在于应该买到假货stm32
upload的时候可以添加如下参数来达到烧录程序的功能,不过debug还是不行

upload_flags = -c set CPUTAPID 0x2ba01477

需要修改配置文件C:\Users\test.platformio\packages\tool-openocd\scripts\target\stm32f1x.cfg

swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
========>
swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID -expected-id 0x2ba01477

或者

set _CPUTAPID 0x1ba01477
=======>
set _CPUTAPID 0x2ba01477 || set _CPUTAPID 0

设置0的时候就不会判断expected id,用于兼容不同的芯片,继续进行调试

总结

platformio基本在开发stm32的时够用,且是开源免费的,对开发者来说是一个不错的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3435.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【题解】【排序】—— [NOIP2017 普及组] 图书管理员

【题解】【排序】—— [NOIP2017 普及组] 图书管理员 [NOIP2017 普及组] 图书管理员题目背景题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 1.思路解析2.AC代码 [NOIP2017 普及组] 图书管理员 通往洛谷的传送门 题目背景 NOIP2017 普及组 T2 题目描述 图书馆中…

华为和思科的配置

vrrp和mstp 思路 vrrp是用来虚拟网关&#xff0c;噢&#xff0c;是虚拟一条虚拟网关 优先级&#xff0c;priority越大越优先&#xff0c;优先级相同&#xff0c;哪个的路由器的vrrp先起来&#xff0c;谁就是主 mstp是快速生成树协议&#xff0c;防止环路用的 优先级越小越优…

React 前端如何通过组件完成 “下载 Excel模板” 和 “上传 Excel 文件并读取内容生成可使用的对象数组”

文章目录 一、Excel 模板下载01、代码示例 二、Excel 文件上传01、文件展示02、示例代码03、前端样式展示04、数据结果展示 三、完整代码 本文的业务需求是建立在批量导入数据的情况下&#xff0c;普通组件只能少量导入&#xff0c;数据较多的情况都会选择 Excel 数据导入&…

『统计检验』一篇文章入门置信区间

文章目录 置信区间点估计和区间估计置信度置信区间的计算置信区间计算的具体例子 参考文献 置信区间 置信区间是总体参数落在测量结果周围的程度 点估计和区间估计 点估计&#xff1a;通过样本数据估计总体参数 ⇒ \Rightarrow ⇒使用样本统计量&#xff08;如样本均值、样本…

ESRALLY安装与使用

ESRALLY安装与使用 geonames、geopoint:都是和地理位置相关的,如果需要测试ES在地理位置处理的性能可以选用 http_logs:是http_server的,如果要测服务器日志、redis日志、apache日志可以选用 说明:esrally 自带的测试数据即为 rally_track 文件夹中的内容,主要包括: Ge…

SpringMvc day1101

ok了家人们&#xff0c;今天我们继续 studying springMvc&#xff0c;let‘me see see 四.SSM整合 SpringMVC Spring MyBatis WebConfig SpringConfigMybatisConfig SpringMvcSupport jdbc.properties 表现层 业务层持久层 EmpController EmpServiceEmpMapper EmpServiceIm…

关于基于 GA102 核心的显卡及主要参数

基于 GA102 核心的显卡的主要参数&#xff1a; 主要用途 高端游戏, 专业图形处理 高端游戏, 专业图形处理 高端游戏, 专业图形处理 高端游戏, 专业图形处理 专业图形处理, 数据中心 数据中心, AI 计算 解释 CUDA 核心数&#xff1a;更多的 CUDA 核心意味着更强的并行计算能力。…

C++ 多态 (详解)

多态的概念 通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。举个栗子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&#xff1b;学生买票时&#xff0c;是半价…

雷池社区版新版本功能防绕过人机验证解析

前两天&#xff0c;2024.10.31&#xff0c;雷池社区版更新7.1版本&#xff0c;其中有一个功能&#xff0c;新增请求防重放 更新记录&#xff1a;hhttps://docs.waf-ce.chaitin.cn/zh/%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95 仔细研究了这个需求&#xff0c;…

省级-社会保障水平数据(2007-2022年)

社会保障水平是一个综合性的概念&#xff0c;它不仅涉及到一个国家或地区的社会保障制度覆盖范围&#xff0c;还包括了提供的保障种类与水平&#xff0c;以及这些制度在满足公民基本生活需求方面的能力。 2007-2022年省级-社会保障水平数据.zip资源-CSDN文库https://download.…

如何搭建汽车行业AI知识库:定义+好处+方法步骤

在汽车行业&#xff0c;大型车企面临着员工众多、价值链长、技术密集和知识传播难等挑战。如何通过有效的知识沉淀与应用&#xff0c;提升各部门协同效率&#xff0c;快速响应客户咨询&#xff0c;降低销售成本&#xff0c;并开启体系化、可持续性的知识管理建设&#xff0c;成…

【C++篇】数据之林:解读二叉搜索树的优雅结构与运算哲学

文章目录 二叉搜索树详解&#xff1a;基础与基本操作前言第一章&#xff1a;二叉搜索树的概念1.1 二叉搜索树的定义1.1.1 为什么使用二叉搜索树&#xff1f; 第二章&#xff1a;二叉搜索树的性能分析2.1 最佳与最差情况2.1.1 最佳情况2.1.2 最差情况 2.2 平衡树的优势 第三章&a…

如何在Linux下部署自己的ZFile开源网盘

ZFile 项目介绍 ZFile是一个功能强大、灵活的开源网盘系统&#xff0c;为用户提供安全便捷的文件存储和共享方案。 项目概述 ZFile由ZFile, Inc.开发和维护&#xff0c;基于Docusaurus构建。其用户友好的界面支持多种文件存储和共享功能&#xff0c;并具备高度的可定制性和扩…

平替、超越Jira?18 个最佳 Jira 替代方案【开源+免费+付费】

Jira 是一种流行的项目管理工具&#xff0c;被团队广泛用于跟踪和管理他们的任务、问题和项目。 打个不太恰当的比喻&#xff0c;Jira &#xff0c;她就是项目管理家的单反。 如果您正在寻找 Jira 的替代方案&#xff0c;本文介绍了 18个最重要的 Jira 替代方案&#xff0c;可以…

Nuxt.js 应用中的 nitro:build:public-assets 事件钩子详解

title: Nuxt.js 应用中的 nitro:build:public-assets 事件钩子详解 date: 2024/11/5 updated: 2024/11/5 author: cmdragon excerpt: nitro:build:public-assets 是 Nuxt 3 中的一个生命周期钩子,在复制公共资产之后调用。该钩子使开发者能够在构建 Nitro 服务器之前,对…

02_CC2530 + LED流水灯

CC2530 LED流水灯 前言 ​ 在搭建ZigBee定位系统前&#xff0c;先通过几个基础案例熟悉CC2530的一些外设和寄存器编程方式。CC2530基础篇由LED流水灯(按键控制启停、定时器中断方式)、定时器与Delay_ms延时函数、Uart串口通信三章组成。 按键控制启停–通用I/O中断 硬件电…

无线模块的最佳搭档:天线全面选型指南

在无线通信领域&#xff0c;天线的选择至关重要。它不仅影响信号的覆盖范围和传输质量&#xff0c;还直接关系到系统的整体性能。在众多无线模块中&#xff0c;找到合适的天线可以最大化其潜力&#xff0c;确保稳定和高效的数据传输。 在设计适用于射频系统的无线收发设备时&a…

产品思维笔记(一):打造用户喜爱的产品by Marty Cagan

全文摘要 《启示录&#xff1a;打造用户喜爱的产品》是由美国著名产品经理Marty Cagan所著&#xff0c;他曾经是eBay最出色的产品经理之一&#xff0c;也是Google X实验室的创始人之一。在这本书中&#xff0c;他分享了自己的经验和教训&#xff0c;帮助读者更好地理解如何打造…

推荐一款功能强大的电影格式转换器:Total Movie Converter

Coolutils Total Movie Converter(电影格式转换器)是一款可以将超清或者高清蓝光的视频电影进行格式转换的工具&#xff0c;高质量速度快操作简单就是软件最大的亮点&#xff0c;它可以转换几乎所有流行的视频编解码器。 基本简介 Coolutils Total Movie Converter 也可以使视…

掌声响起来——不确定性人工智能与高斯云方法的应用

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…