赞
踩
前段时间,看一些开源项目时,发现是基于PlatformIO IDE编写的,然后去查了下这个IDE,功能性还是挺强大的,不过国内好像是没找到特别详细的一个教程。为此试下毒。
PlatformIO 是一个跨平台、跨架构、多框架、专业的 嵌入式系统工程师和编写应用程序的软件开发人员的工具 用于嵌入式产品。
PlatformIO IDE 是下一代物联网集成开发环境。
直接在VScode的插件里搜索 PlatformIO,然后安装即可(挺方便的)
我这里是已经安装好了,故第3步那是显示的禁用,首次安装时,这是是显示的安装。
安装完成后,在vscode左侧,有会一个像蚂蚁头像(或外星人头像的图标,我也不清楚这叫啥图标了…),然后在底部会有 房子 √ → 的图标(若安装完,没这些图标,可以重启下VScode)
打开PIO主页,在主页的顶部有一个导航栏,有用的就是前进后退的按钮和账户相关的交互元素
在左侧有Home、project、Inspect、Libraries、Boards、Platforms和Devices七个标签页,下面分别简单说明一下。
进入Platformio 的主页显示的就是 Home 标签页,标签页内从上到下可以依次看到以下内容:
显示最近打开的工程
用于检测项目,可以看到代码占用了多少RAM和Flash等信息,具体看文档介绍.
ibraries 标签页是管理库的接口,这里只简单说明一下,主要包含四个标签页:
这个标签页用来展示 Platformio 支持的开发板列表,最上方的搜索框内可以输入关键词过滤显示相关的开发板,比如输入 Arduino 就会显示Arduino的开发板。
列表中每个条目显示一个开发板,包含信息:
这个标签页用来管理平台支持,比如我的这里安装了三个平台的支持:
这里显示连接电脑的硬件设备,比如串口、数字逻辑设备和网络设备。
嵌入式的第一步,点个灯,现在我们来创建个点灯工程,在主页中,点击 New project,
然后点击finish,等待(注意第一次生成的时候需要下载资源,会比较慢,可找加快github的访问的方法或科学上网),我这工程名是blink,板子是正点原子的精英板,故选择STM32F103ZE的芯片,架构选择arduino(可选择其他架构,如STM32Cube),当前的例子是采用的arduino架构。
创建完成后,会打开对应的工程:
红框内是新建项目的文件,
编写代码 mai.cpp文件下增加两个灯的引脚,然后进行翻转,让其闪烁
#include <Arduino.h> #define LED_PIN0 PB5 #define LED_PIN1 PE5 void setup() { // put your setup code here, to run once: pinMode(LED_PIN0,OUTPUT); pinMode(LED_PIN1,OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED_PIN0,HIGH); digitalWrite(LED_PIN1,HIGH); delay(1000); digitalWrite(LED_PIN0,LOW); digitalWrite(LED_PIN1,LOW); delay(1000); }
编写完成后,点击 底部栏的 √ 图标进行编译
第一次编译通常要比较耗时,按照我上面说的(找github的加速工具或科学上网),等显示编译成功,就OK了,然后就开始进行下载到板子上
Github加速工具
点击 → 按钮,显示报错(我这个时候是将正点原子的串口下载线连到电脑上了),
这里显示报错是,默认使用的stlink,那么我使用串口下载的话,那么将这个下载改成串口下载即可,
在ini配置文件中,增加这两行,将下载方式改为串口下载,并固定COM8下载(这是因为我这不仅仅只插了这一个端口,可查看电脑的设备管理器,看你用的是哪个端口,若电脑上只接了一个连到开发板的端口,则不需要固定端口,会自动监测)。
添加完这两行后,再点击编译(√),通过后再下载(→),
现在下载成功了,可以看到开发板的两个灯在进行闪烁。
修改ini文件,将其改成Jlink下载
【注意】:首次通过Jlink或串口下载时都需要下载资源才能下载到板子上,等资源下载完成后,点击下载(→),即可下载到板子上,
还有一点要注意:
下载完后发现板子上没有现象(此时我是Jlink(只用到了JLINK的四根线)给板子上供电的),boot0和boot1都是接地,
然后我断开Jlink,通过串口线给板子供电时,正常现象灯闪烁,故单纯以Jlink供电,不能让板子正常工作。
对于STlink下载的话,应该和Jlink差不多,手上也没STlink,有的朋友可以试试。
上面我们使用了串口下载和Jlink下载,那么可不可以单纯一个开关,进行选择是串口下载还是Jlink下载呢?
于是进行了下面测试,在ini文件中,增加部分代码
如图,然后我点击底部栏的编译(√) ,发现编译了两份工程
然后我点击PIO得到蚂蚁图标,发现在工程任务中有两份我创建的工程,并且在每份工程中都有编译,下载等功能
此时我是串口下载线与电脑连上,故点击STM32F103ZE_Serial工程的build
只编译了STM32F103ZE_Serial工程,然后点击STM32F103ZE_Serial下的upload按钮,进行下载
正常下载。
那么针对这个功能,可以发散性想下,可以将工程中编译不同条件下的宏(开关)定义在这,即可进行选择性编译。
针对于ini配置文件,了解不多,具体还是要看官方手册是怎样应用的
在Jlink工程中增加了一个标识符,然后在main.cpp中代码修改为如下,正常情况下,下载Jlink工程,两个灯闪烁,下载serial工程,一个灯闪烁。
void loop() {
// put your main code here, to run repeatedly:
#ifdef jLINK_flag
digitalWrite(LED_PIN0,HIGH);
#endif
digitalWrite(LED_PIN1,HIGH);
delay(1000);
#ifdef jLINK_flag
digitalWrite(LED_PIN0,LOW);
#endif
digitalWrite(LED_PIN1,LOW);
delay(1000);
}
根据猜想,分别下载serial工程和jlink工程验证
最终的效果是
1.下载Jlink工程,两个灯闪烁
2.下载Serial工程,一个灯闪烁
猜想和实验符合!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。