学习ESP32笔记(VSCode下面基于Arduino开发)

1.platform IO插件的下载(提前安装好python,要下载3.5以上的Python,不然在中间的一部分会一直报错)

VS Code下载platform IO时,开加速器(VPN),并且关闭防火墙

这一步比较慢,大概等十来分钟。

ESP32 f_open报错 esp32 platform_笔记

下面这个就是下载成功。

ESP32 f_open报错 esp32 platform_笔记_02

2.创建ESP32Demo

ESP32 f_open报错 esp32 platform_VPN_03

关闭防火墙,用手机热点给电脑连接,打开VPN(在早上创建成功的,早上是玄学),或者也可以不用VPN?

3.代码的编译和下载

编译

ESP32 f_open报错 esp32 platform_笔记_04

下载

ESP32 f_open报错 esp32 platform_笔记_05

那个端口它是自动选择的,不用你自己去选

ESP32 f_open报错 esp32 platform_VPN_06

串口的选择也可以自己选

ESP32 f_open报错 esp32 platform_VPN_07

可以看到开发板上面的灯会闪烁

ESP32 f_open报错 esp32 platform_VPN_08

4.快捷键的设置

ESP32 f_open报错 esp32 platform_笔记_09

5.添加别人写的代码工程

ESP32 f_open报错 esp32 platform_学习_10

添加完成之后,然后打开(多刷新几遍,就是多点Projects下面的那几个选项)

ESP32 f_open报错 esp32 platform_代码示例_11

在这边就能看到你所添加的工程文件

ESP32 f_open报错 esp32 platform_VPN_12

在这边选择你要编译的工程

ESP32 f_open报错 esp32 platform_笔记_13

在文件中修改的代码,最终都会修改到这个工程指向的路径的文件

ESP32 f_open报错 esp32 platform_学习_14

没有工作区间了,就在这打开以前打开的文件

ESP32 f_open报错 esp32 platform_笔记_15

6.其余库的安装

ESP32 f_open报错 esp32 platform_笔记_16

库的删除

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_17

ESP32 f_open报错 esp32 platform_学习_18

然后在platformio.ini中删除你刚删除库在lib_deps中对应的名字,这样就能完全删除库了

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_19

示例的阅读,和将这个库加入到你选择的工程里面(和Arduino IDE差不多)

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_20

7.ESP32关于PlatformIO的配置信息

看哔站的ESP32的BLE_哔哩哔哩_bilibiliP8

8.ESP32与FreeRTOS

FreeRTOS - ESP32 - — ESP-IDF 编程指南 v4.3 文档 (espressif.com)

9.ESP32外围电路设计(具体在乐鑫官网查看)

ESP32 f_open报错 esp32 platform_代码示例_21

然后根据需求选择,我这选择模组

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_22

ESP32 f_open报错 esp32 platform_笔记_23

点进去就能看到他的规格书了

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_24

在往下拉,就能看到他的原理图了

ESP32 f_open报错 esp32 platform_VPN_25

10.ESP32代码示例(具体在乐鑫官网查看)

乐鑫科技

代码示例-github

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_26

ESP32 f_open报错 esp32 platform_VPN_27

ESP32 f_open报错 esp32 platform_代码示例_28

11.API参考

太极创客Arduino编程语句参考ESP8266-Arduino库 开发参考资料

因为是在VSCode下面基于Arduino开发,所以一些函数可以用ESP8266的来开发

ESP32教程一:arduino环境搭建(这里面有怎么下载ESP32arduino例程的教程)

ESP32-arduino-GitHub

ESP32 f_open报错 esp32 platform_学习_29

ESP32使用Arduino环境,安装、编译、下载、安装库

12.ESP32之FreeRTOS使用

发现不用移植FreeRTOS,就可以用创建任务函数,可能VScode中自带了?

ESP32-Arduino中的FreeRTOS使用 在platformio中不需要引入FreeRTOS的头文件,直接可用

------------------------------分割线----------------------------------------------

当你用platformio创建第一个项目的时候,就已经帮你下载好了freertos,不用你再去移植了

ESP32 f_open报错 esp32 platform_笔记_30

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_31

ESP32 f_open报错 esp32 platform_学习_32

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_33

**只要包含了这个头文件:#include <Arduino.h>就可以去使用FreeRTOS了 **

ESP32 f_open报错 esp32 platform_笔记_34

代码如下:

/*
//  多线程基于FreeRTOS,可以多个任务并行处理;
//  ESP32具有两个32位Tensilica Xtensa LX6微处理器;
//  实际上我们用Arduino进行编程时只使用到了第一个核(大核),第0核并没有使用
//  多线程可以指定在那个核运行;
 */

#include <Arduino.h>
#define USE_MULTCORE 0

void xTaskOne(void *xTask1)
{
    while (1)
    {
        Serial.printf("Task1 \r\n");
        delay(500);
    }
}

void xTaskTwo(void *xTask2)
{
    while (1)
    {
        Serial.printf("Task2 \r\n");
        delay(1000);
    }
}

void setup()
{
    Serial.begin(115200);
    delay(10);

}

void loop()
{

#if !USE_MULTCORE

    xTaskCreate(
        xTaskOne,  /* Task function. */
        "TaskOne", /* String with name of task. */
        4096,      /* Stack size in bytes. */
        NULL,      /* Parameter passed as input of the task */
        1,         /* Priority of the task.(configMAX_PRIORITIES - 1 being the highest, and 0 being the lowest.) */
        NULL);     /* Task handle. */

    xTaskCreate(
        xTaskTwo,  /* Task function. */
        "TaskTwo", /* String with name of task. */
        4096,      /* Stack size in bytes. */
        NULL,      /* Parameter passed as input of the task */
        2,         /* Priority of the task.(configMAX_PRIORITIES - 1 being the highest, and 0 being the lowest.) */
        NULL);     /* Task handle. */

#else

    //最后一个参数至关重要,决定这个任务创建在哪个核上.PRO_CPU 为 0, APP_CPU 为 1,或者 tskNO_AFFINITY 允许任务在两者上运行.
    xTaskCreatePinnedToCore(xTaskOne, "TaskOne", 4096, NULL, 1, NULL, 0);
    xTaskCreatePinnedToCore(xTaskTwo, "TaskTwo", 4096, NULL, 2, NULL, 1);

#endif

    while (1)
    {
        Serial.printf("XTask is running\r\n");
        delay(1000);
    }
}

ESP32 f_open报错 esp32 platform_笔记_35

ESP32 f_open报错 esp32 platform_ESP32 f_open报错_36

ESP32-Arduino中的FreeRTOS使用