PlatformIO使用中遇到的坑
PlatformIO使用中遇到的坑
首先,最重要的多翻翻官方文档中心,VSCode上的使用说明主要可以参考VSCode章节
另外一个,除了文档,遇到问题官方的论坛PlatformIO Community也是可以帮忙的,就是除了都英文之外
根据文档中心,PlatformIO大概分为以下三个部分:
- PlatformIO IDE:个人理解就是下面两个东西的打包(官方目前提供两个:VSC和CLion上的插件做的IDE)
- PlatformIO Core:核心文件,提供CLI(命令行接口)供用户调用,给那种没有使用IDE的人用
- PlatformIO Home:由Core提供的一个前端(图形界面,一个网页,所以说VSC在某种程度上就是一个浏览器 :) )
注意:对于PlatformIO IDE来说,只要装上插件,所有东西都会自动设置完毕,不需要重新安装PlatformIO Core
本人早几年就一直在关注PlatformIO IDE(VSCode端插件),但是当时候一直不满意,就放在VSC禁用列表中吃灰,最近捡起来一看,感觉好使多了,但是仍然遇到不少坑,遂总结如下
推荐设置
- Platformio-ide: Disable PIOHome Startup:使能,即在启动VSC时默认不会启动PlatformIO Home
- Platformio-ide: Activate Only On Platform IOProject:使能,当存在platform.ini文件时激活插件
- Platformio-ide: Custom PATH:设置成PlatformIO Core下的
penv/Scripts
文件夹即可。这个选项用于设置该插件的环境变量,以便之后直接在vsc中调用pio相关命令。在本文中设为D:\\PlatformIO_Core\\penv\\Scripts
(之后会修改默认的PlatformIO Core安装目录) - Platformio-ide: Custom Py Pi Index Url:设置成
https://mirrors.bfsu.edu.cn/pypi/web/simple
即可。在插件中使用默认python时会下载PlatformIO Core,此时会用到pip下载,这个链接用于设置pip的源 - 其他默认即可,一共也没几个配置项
值得注意的是,PlatformIO IDE在安装完毕后会将PlatformIO Core默认安装在
C:\Users\username\.platformio
下,导致之后下载安装的各种库都会安装在这里,正是这个原因导致之前一直没用,C盘装库有点秀另外一点是VSC的PlatformIO IDE插件会使用自带的python3和PlatformIO Core(不建议更换,PlatformIO IDE插件不支持conda环境),安装完毕后会在
<PlatformIO Core>\penv
下生成一个隔离环境,其中pio.exe
、platformio.exe
等命令均在<PlatformIO Core>\penv\Scripts
下,所以建议通过将该目录设为环境变量(如上述Platformio-ide: Custom PATH选项)以便直接调用
修改
修改PlatformIO Core安装目录
根据官方文档Environment variables章节,需要在系统环境变量加上PLATFORMIO_CORE_DIR
变量,重启VSCode即可发现目录变了,之后记得删除C:\Users\username\.platformio
目录即可
修改默认工程目录
根据官方文档pio settings章节,在VSCode中打开PlatformIO终端,通过pio settings
命令修改默认工程目录:
1 | # 查看所有可设置选项 |
ini配置
这个没啥好说的,直接帅官方链接:“platformio.ini” (Project Configuration File),这一章说的很明白了。
这里挑一些常用的配置说下:
-
board_build.f_cpu
:CPU频率设置 -
board_build.mcu
:芯片选择 -
board_build.ldscript
:不使用bsp的默认链接脚本,指向用户自定义的链接脚本 -
build_flags
:编译选项 -
monitor_speed
:串口波特率,默认9600
注意:官方默认包含
/src
下的所有源文件和/include
下的所有头文件,如果需要指定包含其他文件夹的头文件或源文件,则须在.ini
中添加以下配置:
1
2 build_flags =
-I./include/letter_shell
- 上述
-I
配置实际上就是修改编译器的CPPPATH
宏- 这里采用行隔开,可以添加多个参数,具体情况详见构建选项
插件冲突
VSCode安装PlatformIO 插件后会和Arduino、Clangd插件冲突,目前的解决办法就是禁用或者卸载,这是官方的讨论贴:“mitaki28.vscode-clang” extension conflicts with “ms-vscode.cpptools”
Clangd在很多方面是比C/C++好的,之前一直用Clangd替代C/C++微软官方的插件中的自动补全、自动跳转等功能,奈何最近出了点问题只能暂时禁用Clangd换回C/C++插件
设置代理
这里首先要感谢使用下一代的嵌入式IDE-PlatformIO 教程这篇帖子,给了我很大启发:
为了写这篇文章,我已经去阅读了PlatformIO的源码,从其中扣出了第三方包的下载网站是这里:http://dl.bintray.com/platformio/dl-packages/,并且看到其下载是使用python的request模块进行下载的(关键代码)。 而再google一下,发现可以设置
HTTP_PROXY
和HTTPS_PROXY
两个环境变量,来设置下载代理。
不废话,首先参考官方文档可以得知PlatformIO和VSC的代理设置方法:PlatformIO IDE代理设置、Network Connections in Visual Studio Code
其中,有两个点要注意下:
-
在VSC中修改设置项
http.proxy
和http.proxyStrictSSL
,更改的是VSC商店中插件下载相关内容:1
2"http.proxy": "http://ip:port/",//代理ip及端口
"http.proxyStrictSSL": false,//代理设置-
注意:该方法目前只能设置
http
协议,如需要其他协议仍需要参考上述VSC的官方文档:Network Connections in Visual Studio Code,在本地VSCode快捷方式中目标参数增加对应命令行参数即可(或者直接通过命令行启动VSC)1
--proxy-server=<scheme>=<uri>[:<port>][;...] | <uri>[:<port>] | "direct://"
如:
1
code --proxy-server="socks5://127.0.0.1:7890"
-
-
设置并修改系统环境变量
HTTP_PROXY
和HTTPS_PROXY
才是真正修改PlatformIO下载的各种环境
所以,只需要在系统中设置环境变量HTTP_PROXY
和HTTPS_PROXY
为如下形式即可,但是根据这篇帖子:PlatformIO IDE in VSCode can’t connect to the Internet - blocked by Proxy,有如下需要注意的点:
- 不包含域名
- 用户名前面的协议必须为
http://
而不是https://
- 最后的斜杠很重要
- 重新启动VSC
环境变量形式:
1 | HTTP_PROXY: http://<username>:<password>@you_proxy_ip:8888/ |
相关命令
PIO
参考手册:CLI Guide
编辑系统环境变量Path
添加 C:\Users\UserName\.platformio\penv\Scripts;
路径即可使PIO命令在整个Windows中可用而不仅仅只局限于VSC中
pio run
1 | # 运行esp32 idf框架中的menuconfig |
- -t:处理指定的目标,可以允许多个目标。
- VSC自带的命令行不能够在menuconfig中进行上下键选择,必须换到cmd、powershell或者windows terminal下
1 | pio run --environment nodemcuv2-rtos -v |
- –environment或-t:指定编译的环境
- -v:输出编译的详细过程
pio system prune
仅在5.0版本及以上生效
该命令用于移除无效数据:
- 缓存的 API 请求
- 下载的缓存包
- 临时数据
- 不必要的核心包
- 不必要的开发平台包
1 | # 查看要删除数据 |
最后打开PlatformIO Home安装各种库,之后尽情享受PlatformIO带来的乐趣吧