使用PlatformIo 开发 合宙ESP32-C3

发布时间:2022-12-10 15:30

PlatformIo常用配置

ESP8266常见烧录速度:115200 256000 921600 3000000

[env:esp12e]
platform = espressif8266			;平台
board = esp12e						;开发板类型
framework = arduino					;编译方式
upload_port = COM17					;下载程序端口号
upload_speed = 115200				;下载波特率
monitor_port = COM17				;串口控制台端口号
monitor_speed = 115200				;串口控制台波特率

使用框架:Arduino

资料链接:http://luatos.com/t/esp32c3

ESP32-C3是乐鑫推出的一款处理器,主要是替换下市场上老旧的ESP8266, MCU采用 RSIC-V架构, 主频160MHZ,提供内置Flash和外挂Flash 两个版本。 这个开发版所使用的是必须外挂Flash的型号。

使用PlatformIo 开发 合宙ESP32-C3_第1张图片

 方法一:

板子选择:esp32-c3-devkitm-1

在PlatformIo.ini中修改flash_mode

[env:esp32-c3-devkitm-1]

platform = espressif32

board_build.flash_mode = dio

board = esp32-c3-devkitm-1

framework = arduino

monitor_speed = 115200 

使用PlatformIo 开发 合宙ESP32-C3_第2张图片

方法二:

(1)在用户目录中找到 .platformio\platforms\espressif32\boards 目录

(2)新建一个名字为 esp32-c3.json 的文件,复制以下内容:

{

"build": {

"arduino":{

"ldscript": "esp32c3_out.ld"

},

"core": "esp32",

"f_cpu": "160000000L",

"f_flash": "80000000L",

"flash_mode": "dio",

"mcu": "esp32c3",

"variant": "esp32c3"

},

"connectivity": [

"wifi"

],

"debug": {

"openocd_target": "esp32c3.cfg"

},

"frameworks": [

"arduino",
"espidf"

],

"name": "Espressif ESP32-C3-openluat",

"upload": {

"flash_size": "4MB",

"maximum_ram_size": 327680,

"maximum_size": 4194304,

"require_upload_port": true,

"speed": 460800

},

"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",

"vendor": "Espressif"

}

(3)重启Visual Studio Code ,新建工程

使用PlatformIo 开发 合宙ESP32-C3_第3张图片

 使用PlatformIo 开发 合宙ESP32-C3_第4张图片

 经过漫长的等待,就可以采用Arduino框架进行开发了

参考资料:使用PlatformIo 把玩 合宙ESP32-C2 - 哔哩哔哩

流水灯测试程序

/*
*流水灯测试程序
*/
#include 
int led1 = 12;
int led2 = 13;


void setup() {
 pinMode(led1,OUTPUT);
 pinMode(led2,OUTPUT);
}

void loop() {
  digitalWrite(led1,HIGH);digitalWrite(led2,LOW);
  delay(1000);
  digitalWrite(led1,LOW);digitalWrite(led2,HIGH);
  delay(1000);
}

使用millis()点灯

/*
 *使用millis()点灯
 */
#include 
int led1 = 12;
int led2 = 13;

unsigned long previousBlinkTime;
int blinkInterval = 1000; // LED闪烁时间间隔
bool toggle;

void millisBlink(unsigned long currentTime)
{
  //检查是否到达时间间隔
  if (currentTime - previousBlinkTime >= blinkInterval)
  { //如果时间间隔达到了
    toggle = (toggle == 1) ? 0 : 1;
    digitalWrite(led1, toggle); //执行闪烁LED操作

    previousBlinkTime = currentTime; // 将检查时间复位

    Serial.print(F("toggle = "));
    Serial.println(toggle);
  }
  else if (currentTime - previousBlinkTime <= 0)
  { // 如果millis时间溢出
    previousBlinkTime = currentTime;
  }
}

void setup()
{
  Serial.begin(115200);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop()
{
  unsigned long currentMillis = millis(); // 获取当前时间
  millisBlink(currentMillis);
}

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号