ESP32C3学习&开发之路——操作GPIO点灯

16 篇文章 2 订阅
14 篇文章 5 订阅
文章介绍了ESP32C3的GPIO结构和特性,包括输入/输出模式、驱动强度。通过电路设计和程序编写,演示如何使用GPIO控制LED灯闪烁,涉及到了Freertos任务的创建。文章强调了对数据手册、ESP32C3工程结构和Freertos的深入理解对于有效开发的重要性。
摘要由CSDN通过智能技术生成

ESP32系列文章目录

ESP32C3学习&开发之路——操作GPIO点灯



前言

通过前面的学习了解到ESP32C3的内置ESP32C3 芯片是一个 RISC-V 32 位单核微处理器而且有丰富的外设,在STM32系列单片机的开发中最基础的是操作GPIO,控制外接的灯、继电器或者一些简单的设备,ESP32C3 里面的32位单片机也是可以通过编程操作GPIO输出高低电平或者读取输入GPIO的电平值。本次会正式进入ESP32C3的编程中,包括了解ESP的GPIO特性、了解ESP的编程风格、了解ESP的freertos风格和了解ESP的GPIO驱动库。


一、ESP32C3的GPIO

GPIO:通用输入/输出,在处理器中没有特定的功能,但它的功能是可以通过软件控制的。
ESP32C3的GPIO结构要简单些,可以查看《esp32-c3_technical_reference_manual_cn》第五章有关GPIO描述,如下图,展示了ESP32C3的GPIO基本结构。
在这里插入图片描述
GPIO引脚可配置:
• 输入关闭,高阻(IE = 0)
• 输入使能,高阻(IE = 1)
• 输入使能,下拉电阻使能(IE = 1, WPD = 1)
• 输入使能,上拉电阻使能(IE = 1, WPU = 1)
• 输出使能,上拉电阻使能(OE = 1, WPU = 1)
• 模拟输入(部分引脚支持)
• 复用功能
驱动强度:~5 mA——40mA,不同的引脚驱动能力不一样。

GPIO的功能还能通过GPIO 交换矩阵将引脚复用作其他功能,例如 UART、 SPI 等,这里不做延伸,后面有使用到再记录。

ESP32C3的所有GPIO引脚都是按照顺序来定义的,不像STM32因为有众多GPIO引脚需要分为PA、PB、……等,所以配置和使用会不同,从ESP32引脚定义的头文件gpio_types.h中也可以了解到,ESP32C3只有22个引脚,如图
在这里插入图片描述
要操作GPIO引脚实现一些特定的功能需要编写软件对相关的寄存器进行配置和操作,ESP32C3的GPIO也有众多的寄存器(参考《esp32-c3_technical_reference_manual_cn》)。这次主要是操作GPIO控制灯的闪烁,需要用到的寄存器相对较少。
在这里插入图片描述
下面来通过GPIO让LED闪烁。

二、电路设计

驱动强度:~5 mA——40mA,不同的引脚驱动能力不一样。
ESP32C3引脚的驱动能力并不强,所以不通过GPIO输出电流来驱动LED灯。LED灯正极接3.3V,负极串联一个限流电阻再接到指定的GPIO引脚上,如图:
在这里插入图片描述
在这里插入图片描述
实际接线是采用了面包板,如图
在这里插入图片描述

三、程序编写

使用vscode+ESpressif IDF来开发,打开vscode按“ctrl+shift+p”组合键在输入框ESP-IDF:Show Examples Projects点击,选择peripherals->gpio->generic_gpio来创建一个官方工程
在这里插入图片描述
官方工程结构如下,底部栏的相关参数要配置好,在工程里面是没有ESP32C3有关GPIO驱动的库文件的,但是将光标放置在“gpio.h”右键选择“转到定义”则可以打开库文件。
在这里插入图片描述
修改官方的例程代码,这里只需要一个GPIO4来控制LED灯,所以只需配置GPIO4的参数;让LED灯1秒钟闪烁一次。
代码结构是:
定义相关的变量;
初始化LED对应的GPIO;
编写main函数;
编写led任务函数。
ESP32C3的工程是支持freertos系统的,可为led的控制建立一个任务。

代码如下(示例):

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"

#define GPIO4_OUTPUT_IO    4
#define GPIO_OUTPUT_PIN_SEL  (1ULL<<GPIO4_OUTPUT_IO)

void app_led_task(void *pvParameters);

void led_int(void)
{
    //zero-initialize the config structure.
    gpio_config_t io_conf = {};
    //disable interrupt
    io_conf.intr_type = GPIO_INTR_DISABLE;
    //set as output mode
    io_conf.mode = GPIO_MODE_OUTPUT;
    //bit mask of the pins that you want to set,e.g.GPIO4
    io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
    //disable pull-down mode
    io_conf.pull_down_en = 0;
    //disable pull-up mode
    io_conf.pull_up_en = 0;
    //configure GPIO with the given settings
    gpio_config(&io_conf);
}

void app_main(void)
{

    led_int();
    
    printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

    xTaskCreate(app_led_task, "app_led_task", 1024*2, NULL, 6, NULL);
}

void app_led_task(void *pvParameters)
{
    int cnt = 0;
    while(1) {
        printf("cnt: %d\n", cnt++);
        vTaskDelay(1000 / portTICK_RATE_MS);
        gpio_set_level(GPIO4_OUTPUT_IO, cnt % 2);
    }
}

以上代码我们可以看到,在ESP32C3中main函数不需要调用vTaskStartScheduler()来启动任务调度,因为它自动启动了任务调度器。
运行效果如下:
在这里插入图片描述

四、总结

通过查看官方数据手册了解GPIO的特性,能用esp32点亮还是挺好玩的。对数据手册、esp32工程结构和freertos还需要更深入的了解,才能应用的得心应手。路漫漫其修远兮,一步一个脚印,了解其本质。

### 回答1: Blinker ESP32C3 是一款基于 ESP32C3 开发物联网解决方案,它能够帮助用户实现设备与云端的连接和通信。 Blinker ESP32C3 提供了丰富的功能,使得用户可以方便地构建智能设备并加入到物联网中。它支持多种传感器和执行器,例如温湿度传感器、开关、继电器等,可以满足各种不同的应用场景需求。 Blinker ESP32C3 的优点在于其简单易用的开发和部署过程。它提供了完整的软硬件方案和示例代码,开发者只需按照文档指引进行简单的配置和编程,即可实现设备的连接和数据交互。同时,Blinker ESP32C3 还提供了跨平台的移动端 APP 和 Web 控制台,用户可以通过这些工具来管理和控制设备。 另外,Blinker ESP32C3 还支持OTA(远程升级)功能,用户可以利用这一功能来远程升级设备的固件,无需人工干预。这个功能非常有用,可以帮助用户及时修复和改进设备的功能。 总之,Blinker ESP32C3 是一款功能强大且简单易用的物联网解决方案。它能够帮助用户快速构建智能设备,并实现设备与云端的连接和通信。无论是个人项目还是商业应用,Blinker ESP32C3 都能够提供可靠的解决方案。 ### 回答2: blinker esp32c3是一款基于ESP32-C3芯片的物联网开发板,具有内置WiFi和蓝牙功能。它采用了迅捷的双核处理器,可在较低的功耗下实现高性能的应用。该开发板还配备了丰富的外设接口和引脚,可连接各种传感器和执行器,实现灵活多样的物联网应用。 blinker esp32c3支持Blinker智能家居平台,通过与Blinker app配合使用,用户可以方便地实现物联网设备的远程控制和监测。同时,Blinker平台还提供了丰富的应用和功能模块,用户可以通过简单的拖拽操作就能快速定制个性化的物联网应用。 这款开发板还支持Arduino编程环境,开发者可以使用C++语言编写代码,实现各种功能。同时,ESP-IDF编程工具链也可以用于高级开发,提供了更丰富的底层功能和灵活性。 blinker esp32c3物联网应用开发领域有着广泛的应用,可以用于智能家居、工业自动化、农业监测、环境监测等各种场景。该开发板具有易用性、稳定性和高性能的特点,可以帮助开发者快速搭建物联网系统,实现智能化的控制和监测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值