【快速上手ESP32(基于ESP-IDF&VSCode)】01-环境配置&GPIO口&延时函数(先点个灯)

前言

立创开发板之前出了个ESP32S3R8N8的开发板,当时嫖了个优惠券,九块九拿下了。

现在不仅是35.9一个,而且还没货。

如果真的想要的小伙伴可以自己去打板焊一个,人家开源了(目测难度较大,反正我是焊不上去的)。

立创·ESP32S3R8N8开发板 - 嘉立创EDA开源硬件平台立创·ESP32S3R8N8开发板 - 嘉立创EDA开源硬件平台,开源广场汇集了多种类型的电路设计工程,快速实现资源共享!icon-default.png?t=N7T8https://oshwhub.com/li-chuang-kai-fa-ban/li-chuang-esp32s3r8n8-kai-fa-ban前阵子在忙别的事,然后这块板子一直在吃灰,最近没啥事就拿了起来。跟着人家立创官方的文档学一学。

之前出了Arduino的快速上手ESP8266(其实ESP32也差不多,基本通用,就是提供给ESP32的库函数更丰富一些,比较ESP32比ESP8266强大太多了嘛),前阵子还出了MicroPython的快速上手ESP32,那么今天就来出个基于ESP-IDF的快速上手ESP32。

不过这次就不能是一文速通了,因为这个ESP-IDF有点像STM32的固件库,值得说一说的地方还挺多的。

ESP-IDF

我们先问问文心一言,这个ESP-IDF是个什么东西。

总而言之,ESP-IDF就是帮助我们开发ESP系列芯片的一个框架,我们使用它,即可发挥出ESP32的全部威力(没错,我的意思就是Arduino和MicroPython都不如ESP-IDF,但是Arduino和MicroPython会相对而言简单很多)

我们需要先配置好ESP-IDF的环境。

配置环境

首先先下载安装VSCode,这个下载安装直接一路next即可,记得更换默认安装路径。

接着下载ESP-IDF离线安装包。

https://dl.espressif.cn/dl/esp-idf/icon-default.png?t=N7T8https://dl.espressif.cn/dl/esp-idf/选择第二个下载,或者关注我的公众号“折途想要敲代码”回复关键词“ESP32”即可免费下载关于ESP32的所有我打包好的资料。

下载之后直接执行正常安装即可,在选择组件的界面的时候,取消勾选开发集成(因为我们不需要)。安装的时候记得关闭VSCode。

安装完毕之后打开VSCode,去拓展那边下载好ESP-IDF的插件。

然后进入命令面板。

输入

configure esp-idf extension

等待一会进入到下面的这个界面,选择最下面的选项。

接着安装ESP-IDF,一般是会直接显示出来我们之前安装过的,如果没显示出来,那么手动配置一下路径,接着等待安装完毕即可。

GPIO

关于ESP-IDF中如何使用GPIO,可以查阅文档(有时候可能需要魔法)

GPIO & RTC GPIO - ESP32 - — ESP-IDF 编程指南 v5.2.1 文档icon-default.png?t=N7T8https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/peripherals/gpio.html

ESP32中关于GPIO最屌的就是交换矩阵,通过交换矩阵,我们的GPIO可以任意分配到我们想要用的外设上,例如STM32中的UART的引脚是固定的,但是ESP32中UART的引脚却可以通过交换矩阵任意指定,这是非常厉害的地方,我单方面宣布在这个地方ESP32完胜STM32。

上面是官方的技术文档中的特性介绍。

有一个有些矛盾的地方,就是ESP-IDF编程指南和ESP32S3的技术手册中关于GPIO口数量的描述。

技术手册中是说有45个通用GPIO管脚,其中0~21,26~48既可输入也可输出。

而在编程指南中描述又变了,当然也可能是我理解错了。

刚刚把交换矩阵捧上天了,但实际上我们分配GPIO口的时候并不能完全的随心所欲。

 

同上所说,我们有些管脚并不能随意分配。例如34~39引脚只能配置为输入模式,且不具备软件使能上拉或下拉功能。

以及使用WiFi的时候不能使用ADC。

另外需要提一下的是,我用的这款立创开发板出的ESP32S3R8N8把UART0给充公拿去用作烧录程序用了,因此用这款开发板的时候最好就不要使用UART0了。

使用函数

#include "driver/gpio.h"

首先先是包含上面的头文件。

我开头说过,ESP-IDF跟STM32的固件库还是有点像的,使用GPIO口首先我们就需要先配置GPIO口。

同样是传入一个结构体变量的指针,通过传入的结构体的成员参数来配置GPIO。

这个结构体类型的成员参数有以下几个。

我们来看看应该如何填写这些参数。

上表的说明应该已经很详细了,那我就打个样,看看我们点个灯应该如何配置。

#include "driver/gpio.h"

void initGPIO(){
    gpio_config_t init;
    init.intr_type=GPIO_INTR_DISABLE;             //失能中断;
    init.mode=GPIO_MODE_OUTPUT;                   //输出模式
    init.pin_bit_mask=(1ULL<<18);                 //GPIO18
    init.pull_down_en=GPIO_PULLDOWN_DISABLE;      //失能下拉模式
    init.pull_up_en=GPIO_PULLUP_ENABLE;           //使能上拉模式

    gpio_config(&init);
}

配置完之后我们就可以使其输出高电平或者是低电平了。

以上函数是输出或者是获取输入的函数,都比较简单,编程指南中说的也比较清楚。

那么至此我们就可以点灯了,但是我们想要让它闪烁起来,那么还需要看看延时函数怎么使用。

延时函数

这个我们包含一个头文件。

#include <unistd.h>

然后使用usleep函数,参数写入要延时的微秒即可延时。

知道怎么延时之后,那么我们就直接开始让LED闪烁。

#include "driver/gpio.h"
#include <unistd.h>

void initGPIO(){
    gpio_config_t init={
        .intr_type=GPIO_INTR_DISABLE,             //失能中断;
        .mode=GPIO_MODE_OUTPUT,                   //输出模式
        .pin_bit_mask=(1ULL<<18),                 //GPIO18
        .pull_down_en=GPIO_PULLDOWN_DISABLE,      //失能下拉模式
        .pull_up_en=GPIO_PULLUP_ENABLE,           //使能上拉模式
    };

    gpio_config(&init);
}

void app_main(void){
    initGPIO();
    while(1){
        gpio_set_level(18,0);
        usleep(500*1000);       //1000us是一个ms,延时500个ms,可以另外封装成毫秒延时函数
        gpio_set_level(18,1);
        usleep(500*1000);
    }
}

那么我们通过上面的代码就成功地让LED闪烁了起来。

参考

Docsicon-default.png?t=N7T8https://lceda001.feishu.cn/wiki/GOIlwwfbIi1SC3k8594cDeFVn8gGPIO & RTC GPIO - ESP32 - — ESP-IDF 编程指南 v5.2.1 文档icon-default.png?t=N7T8https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/peripherals/gpio.html《esp32-s3_datasheet_cn.pdf》

《esp32-s3_technical_reference_manual_cn.pdf》

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用VSCode配置ESP-IDF环境时,有几个步骤需要遵循。 首先,需要下载并安装VSCode软件。然后,在VSCode中下载并安装Espressif IDF插件。这一步只需下载插件,不需要进行任何配置。接下来,需要下载ESP-IDF工具。可以在终端中运行以下命令来下载ESP-IDF工具: ``` mkdir -p ~/esp cd ~/esp git clone --recursive https://github.com/espressif/esp-idf.git ``` 在下载完成后,需要进行工具的配置。在终端中运行以下命令: ``` cd ~/esp/esp-idf ./install.sh ``` 然后,需要设置环境变量。同样在终端中运行以下命令: ``` cd ~/esp/esp-idf ./export.sh ``` 为了方便使用,可以在`~/.bashrc`文件中添加一个宏命令。打开`~/.bashrc`文件,可以使用以下命令: ``` vi ~/.bashrc ``` 在文件的最后一行添加以下命令: ``` alias get_idf='. $HOME/esp/esp-idf/export.sh' ``` 保存文件后,每次打开一个新的终端窗,只需要输入`get_idf`命令,就可以给对应的终端窗添加ESP-IDF的环境变量。 最后,可以创建自己的工程并开始开发。希望这些步骤能够帮助您成功配置ESP-IDF环境并在VSCode中进行开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ESP-IDF/VSCode安装和使用(ESP32开发环境)](https://blog.csdn.net/luhanhua/article/details/131028184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ESP-IDF + Vscode ESP32 开发环境搭建以及开发入门](https://blog.csdn.net/qq_43332314/article/details/129015602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值