简介
一、安装准备工作
二、使用过程中的一些注意事项
三、ESP32的闪灯示例代码
对于嵌入式开发,特别是单片机(MCU)的开发而言,不想过分折腾开发工具的话,一般都会选用各个硬件厂商推荐或指定的IDE。ARM的一般就是MDK、IAR,DSP的就是CCS,ST还有自己的推出的IDE。MDK、IAR作为嵌入式IDE的两大巨头,以其界面古老、代码编辑功能孱弱经常成为CSDN博客上的槽点,但由于他们有对仿真器、编译器的支持度高,调试简单的优点,一直也保持着极大的用户粘度。
我最近手痒重新搞了一下Arduino,依然感觉Arduino IDE还是原来惨不忍睹的样子,一番搜索后发现了PlatformIO这个强大的,未来会更优秀的IDE。用了几天,虽然PlatformIO还有着各种小问题,但瑕不掩瑜,相信未来PlatformIO一定会是嵌入式IDE里面不可轻视的力量。
以下是PlatformIO的简介:
Platform是一个基于VScode的插件,利用了vscode强大的扩展extension功能,使得开发者可以在vscode中直接调用gcc、jlink、gdb等进行开发、调试。
Arduino IDE的问题有:没有代码跳转、没有工程管理、无法断点调试,这些问题导致我在以前一直只能以Arduino IDE的包管理器为跳板,寻找一些优秀的第三方库(往往是C++风格),改造后再用到单片机的程序开发上。而PlatformIO把以上问题都解决了,而且包管理器更加强大,除了Jlink调试时还不算顺手外,真的没有什么可以挑剔了。
另外,PlatformIO还会默认包含Arduino的开发框架(还能另外安装ESP-IDF、STM32Cube[含HAL和LL库]等),不单止AVR,还可用于STM32、ESP32、NXP等等,野心和眼界之大并不小于MDK。
本文只以Windows开发举例,毕竟作为传统单片机开发人士装不起Linux和MAC的逼。要安装的软件包括:
1、python(我目前的版本是3.8.5,其他文章有提过PlatformIO只支持python2的,那应该是以前的事,python2在2021年2月停止提供支持,PlatformIO目前也已经使用python3来做脚本)。
2、VScode
3、PlatformIO插件
4、科学上网的梯子(很多库只能从国外的源下载,没有一把稳定的梯子你会很痛苦,别把希望放在把库解压在指定文件夹这种招数上,一个两个库你能这么玩,PlatformIO的库多得很,库下载时的感觉就像Linux 的Update时一样)
安装教程直接上个视频,这视频是我目前找到最好最细致的安装视频了:
platformIO 入门
视频链接:https://www.bilibili.com/video/BV1fh411y7DF?t=2968
看完视频后,你基本能够在Arduino Uno板上写一个demo了。
这个视频指出了一个很重要的事情:ESP8266和ESP32可以编译完直接下载程序了!回想起以前编写下载ESP程序的痛苦,感觉现在真的值了。
1、一定要给pip(Python 包安装和管理工具)换成国内的更新源。
方法如下:
(1)直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,然后新建文件pip.ini,即 %HOMEPATH%\pip\pip.ini,在pip.ini文件中输入以下内容(以清华镜像为例):
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
(2)安装virtualenv虚拟环境库
pip install virtualenv
(3)创建virtualenv虚拟环境
virtualenv C:\Users\Administrator\.platformio\penv
(4)激活virtualenv虚拟环境
virtualenv C:\Users\Administrator\.platformio\penv\Scripts\active
2.PlatformIO 更新
(5)将PlatformIO Core安装到虚拟环境中
pip install -U platformio
(6)将以下路径加入windows环境变量
C:\Users\Administrator\.platformio\penv\Scripts
(7)PIO更新
pio update
更新成功会有下图:
有问题的话,最好还是看一下官方手册:
(1)https://docs.platformio.org/en/latest/core/userguide/cmd_update.html
(2)https://docs.platformio.org/en/latest/integration/ide/vscode.html#ide-vscode
#include
#define LED_BUILTIN 5
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}