[Vim + PlatformIO 开发 ESP 专题笔记-1] Ubuntu +Vim + PlatformIO 组成 Arduino 相关的开发环境

前言

我想在 Ubuntu 下开发 STC/STM/ESP/Arduino 相关的产品应用,但是我又偏爱 Vim 和命令行的组合方式编辑代码而且环境需要用docker,不想使用 Vs Code 或者 Arduino ide要怎么弄呢? 找了好久终于发现可以 Vim + PlatformIO 组成 结合组成的开发环境能够满足我的需求,下面就介绍该环境怎么搭建。

PlatformIO 介绍

百度百科: PlatformIO

建议

建议环境在 docker 搭建,这样不影响电脑的环境,毕竟电脑环境比较复杂,不同项目之间最好隔离,故此推荐 docker

安装python环境及vim

该步骤跳过,自行百度

安装 PlatformIO

下载 PlatformIO 的core,执行安装脚本

安装

python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"

添加环境变量

将 ~/.platformio/penv/bin 添加到路径 PATH

检查安装是否成功

python3 get-platformio.py check core

检查配置

python3 get-platformio.py check core --dump-state ~/.platformio/Cpioinstaller-state.json

最后安装 PlatformIO Core

python3 get-platformio.py

如果顺利执行到此步, PlatformIO 已经安装完成

创建对应的工程框架
1 先确定使用的开发板,查找板子ID 如下:
platformio board
或者
platformio boards | grep < your board >
2 根据板子ID 创建工程

确定使用的开发板之后,执行下面的指令建立工程

mkdir project_dir
cd project_dir
pio project init --ide vim --board < your board id >
 
比如我的板子是 esp8266 falsh 1M 找到id 是 esp01_1m
mkdir xiaoshu_esp8266_1m_project
cd xiaoshu_esp8266_1m_project

pio project init --ide vim --board esp01_1m

创建工程结构如下

├── include
│   └── README
├── lib
│   └── README
├── Makefile
├── platformio.ini
├── src
└── test
    └── README

1) include: 头文件
2)lib: 需要用到的库文件或其他库,如 ST7789 库
3)src: 源代码位置,需要自己在这编辑自己的入口源码
4)test
5)platformio.ini:工程的一些基本配置
下载程序可能需要添加: upload_port = /dev/ttyUSB0

3 编写 Makefile 文件
#SHELL := /bin/bash
#PATH := /usr/local/bin:$(PATH)

all:
    pio -f -c vim run

upload:
    pio -f -c vim run --target upload

clean:
    pio -f -c vim run --target clean

program:
    pio -f -c vim run --target program

uploadfs:
    pio -f -c vim run --target uploadfs

update:
    pio -f -c vim update

执行 make 指令构建工程,执行 make upload 下载程序到开发板

编写点亮LED 代码测试框架是否正常
1 在如下结构的 src 目录下 编写mia.c
├── include
│   └── README
├── lib
│   └── README
├── Makefile
├── platformio.ini
├── src
└── test
    └── README

代码示例

#include <Arduino.h>                                                                                                                                                       
#define led 2      // 定义板载led等的控制引脚是2号

/**
 * 伪代码,讲解setup方法和loop方法的调用过程
 *
 * 大概原理
 *  1.Arduino上电初始化进入执行main方法
 *  2.main方法调用setup()方法
 *  3.while(true)死循环,在死循环里面调用loop方法
 *  
 * Arduino伪代码:
 *  
 *  int main(){
 *      ...一些代码...
 *      setup();
 *      ...一些代码...
 *      while(true){
 *          ...一些代码...
 *          loop();
 *          ...一些代码...
 *      }
 *      ...一些代码...
 *  }
 *
 * 在此,我们只需要在setup方法中进行一些必要的初始化(比如:波特率设置,引脚工作模式等
 *      在loop方法中进行业务逻辑处理
 *
 */

//该方法在Arduino上电初始化的时候会自动回调一次,可以进行一些必要的初始化
void setup(){
    pinMode(led,OUTPUT);    // 设置led的工作模式为输出模式
}

/** 该方法会被Arduino循环回调 */
void loop(){
    digitalWrite(led,HIGH);     //设置led灯输出高电平
    delay(1000);                //延时一秒
    digitalWrite(led,LOW);      //设置led灯输出低电平
    delay(1000);                //延时一秒
    digitalWrite(led,HIGH);     //设置led灯输出高电平
    delay(500);                //延时0.5秒
}

2 编译

执行 make 指令构建工程,执行 make upload 下载程序到开发板

如上就是整个搭建过程
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值