ESP8266_RTOS_IDF + VSCODE开发环境搭建


1.前言

1.采用了IDF风格的ESP8266工程和ESP32非常相似,只有部分底层API修改过了,所以在学习ESP32前可以先学习一下ESP8266 IDF RTOS开发.

2.准备工作

2.在开发之前首先得准备好一块ESP8266开发板(nodemcu),这个东西某宝买一个即可,另外就是需要提前准备下面的三个文件:

ESP8266_RTOS_SDK (IDF风格的ESP8266工程)
xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32 (ESP8266编译工具链)
esp32_win32_msys2_environment_and_toolchain.zip(window下 linux仿真环境)

上面的文件都可以在乐鑫官网上下载到下载链接,后面两个文件可以使用我提供的链接:
https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_esp2020r2_toolchain-20200601.zip

3.git的下载和安装

3.在下载开发环境需要的文件前,首先得先下载安装好Git!
首先进入官网下载页面:Git - Downloads (git-scm.com),选择Windows版本的Git

在这里插入图片描述


然后根据自己电脑的位数选择32位或者64位下载,我的电脑是64位的,选择64-bit Git for Windows Setup.

在这里插入图片描述


下载完成后可以直接进行安装,一路点击next(当中可以设置软件安装路径),直到出现install后点击,进行安装!

在这里插入图片描述


安装完成后,可以打开cmd窗口(win+r,输入cmd,回车)输入git --version命令查看是否安装成功,如果弹出版本信息说明安装成功!此时在桌面/文件夹内右击会出现以下两个选项:

在这里插入图片描述


安装完git后可以设置一下自己的账号密码,运行git-bash.exe(或者在win桌面上,鼠标右键菜单中Git Bash,运行)

查看用户名
git config user.name

查看密码
git config user.password

查看邮箱
git config user.email

修改用户名
git config --global user.name “xxxx(新的用户名)”

修改密码
git config --global user.password “xxxx(新的密码)”

修改邮箱
git config --global user.email “xxxx@xxx.com(新的邮箱)”

如果还需要码云(Gitee)创建SSH KEY,则需要输入下面的命令,连续三次回车ssh-keygen -t rsa -C “xxxx@yyy.com(你设置的邮箱)”
然后就会在你当前登录的用户根文件夹下创建“.ssh”文件夹
里面有个 id_rsa.pub 的文件内容就是我们需要的SSH公钥!
(例如我当前登录账号名称为XXZZ,则文件在C:\Users\XXZZ\.ssh\目录下)

4.ESP8266_RTOS_SDK的下载

4.下面来说一下下载的方法和链接:
下载“ESP8266_RTOS_SDK”,可以通过git在GitHub下载(需要提前安装git工具,在git命令行窗口输入下面的命令进行下载(在保存下载文件夹的目录,鼠标右击,选择Git Bash Here弹出git命令行窗口)):

git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git

如果总是下载失败超时或者嫌弃速度太慢,可以使用的是国内的gitee下载(但是在Gitee下载会弹出窗口需要你填入gitee的账号密码,不过我们也有办法不用账号密码):

git clone --recursive https://gitee.com/EspressifSystems/ESP8266_RTOS_SDK.git

下载的时候,如果弹出窗口需要你填入gitee的账号密码,你可以选择填写,也可以选择忽略,然后打开下载文件下的“.gitmodules”文件

在这里插入图片描述


然后将文件内的内容修改为:

[submodule "components/json/cJSON"]
path = components/json/cJSON
url = https://github.com/DaveGamble/cJSON.git

[submodule "components/mbedtls/mbedtls"]
path = components/mbedtls/mbedtls
url = https://github.com/espressif/mbedtls.git

[submodule "components/lwip/lwip"]
path = components/lwip/lwip
url = https://github.com/espressif/esp-lwip.git

[submodule "components/mqtt/esp-mqtt"]
path = components/mqtt/esp-mqtt
url = https://gitee.com/creekwater/esp-mqtt.git

[submodule "components/coap/libcoap"]
path = components/coap/libcoap
url = https://github.com/obgm/libcoap.git

进入到文件内,输入下面的命令,更新下载子分支!

 cd ESP8266_RTOS_SDK
 git submodule sync
 git submodule update --init --recursive  

在这里插入图片描述


注意:记得带参数:--recursive,表示确保子模块全部下载完毕,如果子模块(例如json)没有下载全,否则编译时会报错。
如果在输入连接时忘记了带参数–recursive,还可以进行补救

如果首次克隆仓库及其模块,使用:
git clone --recursive 仓库地址

对于仓库首次拉取模块,可以使用:
git submodule update --init --recursive

更新子模块(适用于git 1.8.2及以上版本)
git submodule update --recursive --remote

更新子模块(适用于git 1.7.3及以上版本)
    git submodule update --recursive
或者
    git pull --recurse-submodules  

5.开发环境的搭建

5.下载完成后便开始搭建开发环境~
第一步,选择一个目录作为你开发ESP8266的工作目录(不要带中文),例如我选择F:\8266\esp-idf-2作为我的工作目录

第二步,解压esp32_win32_msys2_environment_and_esp2020r2_toolchain-20200601.zip得到msys32文件夹,并保存到工作目录下。(我的在F:\8266\esp-idf-2

第三步,解压xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip得到xtensa-lx106-elf文件夹,并保存到工作目录\msys32\opt目录下。(我的在F:\8266\esp-idf-2\msys32\opt

第四步,运行工作目录\msys32\mingw32.exe程序,(我的是F:\8266\esp-idf-2\msys32\mingw32.exe),执行完后,会生成一个文件夹:工作目录**\msys32\home\Administrator\(这里的administrator与开机帐号相对应,例如我是XXZZ,则这个目录就是F:\8266\esp-idf-2\msys32\home\XXZZ\)

第五步,将得到的ESP8266_RTOS_SDK放到刚生成的工作目录\msys32\home\Administrator\下,

第六步,下载VSCODE,并进行配置,例如C/C++环境配置,中文设置。

6.开发环境的配置

6.配置开发环境
打开工作目录\msys32\etc\profile.d\esp32_toolchain.sh,将里面的内容修改为:

export PATH="$PATH:/opt/xtensa-esp32-elf/bin"
export PATH="$PATH:/opt/xtensa-lx106-elf/bin"
export IDF_PATH="F:\8266\esp-idf-2\msys32\home\XXZZ\ESP8266_RTOS_SDK"
export LANG="en_US"

其中IDF_PATH后面的内容为:工作目录\msys32\home\Administrator\ESP8266_RTOS_SDK(这里的administrator与开机帐号相对应,例如我是XXZZ,则这个目录就是F:\8266\esp-idf-2\msys32\home\XXZZ\ESP8266_RTOS_SDK),
下面说的工作目录则指的是:工作目录\msys32\home\Administrator\ESP8266_RTOS_SDK目录
在工作目录下新增MyProject文件夹,作为自己工程的目录,然后将工作目录\examples\get-started下的hello_world文件夹复制到MyProject文件夹下。
将ESP8266开发板(nodemcu)接入电脑,查看设备管理器当中的端口号!,例如我的端口号为COM5,然后执行msys32\mingw32.exe,输入以下命令回车,打开menuconfig,

cd $IDF_PATH
cd MyProject/hello_world
python -m pip install --user -r $IDF_PATH/requirements.txt
make menuconfig

然后在menuconfig界面上选择serial flasher config回车,将原来的串口号/dev/ttyusb0修改为自己开发板对应的串口号后保存,例如我修改为COM5,OK后依次exit退出。

在这里插入图片描述

7.编译并烧录

7.编译并烧录
进入工程目录。即cd $IDF_PATH -> cd MyProject/hello_world,后执行make flash命令进行编译烧录,(如果之前下载的ESP8266_RTOS_SDK各种子模块不完整,此时编译将会报错)

8.配置VSCODE

8.配置VSCODE
首先使用VSCODE打开ESP8266_RTOS_SDK目录(我的目录是:F:\8266\esp-idf-2\msys32\home\XXZZ\ESP8266_RTOS_SDK),然后在设置(Ctrl+,)当中修改settings.json为下面的内容:(里面的文件目录修改成自己的即可)

在这里插入图片描述

 { 
    "terminal.integrated.shell.windows": "F:\\8266\\esp-idf-2\\msys32\\msys2_shell.cmd",
    "terminal.integrated.shellArgs.windows": [
        "-defterm", 
        "-mingw32", 
        "-no-start", 
        "-here"
    ]   
    
}

然后点命令面板(Ctrl+Shift+P),输入C/C++选择编辑配置JSON,在 intelliSenseMode 下面添加如下节点(里面的文件目录修改成自己的即可,包括GCC的文件夹)

 {
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "F:/8266/esp-idf-2/msys32/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/5.2.0/include",
                "${workspaceFolder}/components/spiffs/test_spiffs_host/sdkconfig",
                "${workspaceFolder}/components/esp8266/include"
                ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64",
                "browse": {
                    "path": [
                    "F:/8266/esp-idf-2/msys32/home/Administrator/ESP8266_RTOS_SDK/components",
                    "F:/8266/esp-idf-2/msys32/opt/xtensa-lx106-elf"
                    ]
                } 
        }
    ],
    "version": 4
}

到这一步就算完成了VSCODE开发环境的配置了,此时我们可以通过VSCODE里面的终端进行配置操作了:

使用下面命令进行编译烧写
make flash
最后下面命令重置设备并接收串口信息
make monitor

在这里插入图片描述


也可以使用串口助手,设置波特率为74880即可!!!

在这里插入图片描述


还可以修改代码设置波特率为115200!

/* 
Hello World Example
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/uart.h"//导入串口头文件

//波特率:74880
void app_main()
{
    uart_set_baudrate(UART_NUM_0,115200);//初始化波特率为115200
    printf("Hello world!\n");//输出程序员的标准问好

    //芯片信息
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("想象之中:This is ESP8266 chip with %d CPU cores, WiFi, ",chip_info.cores);
    printf("silicon revision %d, ", chip_info.revision);
    //flash信息,大小和类型(外部)
    printf("想象之中:%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
    //使用freertos计时函数倒计时
    for (int i = 10; i >= 0; i--)
    {
        printf("想象之中:Restarting in %d seconds...\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
    printf("想象之中:Restarting now.\n");
    fflush(stdout);//刷新输出
    esp_restart();//重启
}

最后,想学习 ESP8266_RTOS_SDK 开发可以查看ESP8266_RTOS_SDK目录下的examples文件夹,里面包含了项目示例

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340