ESP32S3 GIPO 基本操作-点灯

最近想要折腾下一个控制电机的东西,看到ESP32这系列芯片, 之前对这方面完出没接触,只是在大学的时候接触过C51单片机, 下面就一起开始从零学这东西吧~

首先我们需要以下材料

  • ESP32S3开发板
  • 600欧姆电阻
  • LED灯
  • 面包板
  • 跳线若干
    准备好材料后我们按以下方法链接全部材料

翻开ESP32S3开发板背后,在阵脚上写着 123456789 这些数字,这些是GPIO 的编号, 3V3是3.3V电源输出, G代表接地GND


线把开发板插入到面包板上 , 按照第一张图那样插

  1. 用条线链接G到面包板上的-孔
  2. 把LED 插入 +-孔(记得区分极性)
  3. 用一个600Ω的电阻插入面包板的+孔, 另一脚插入同排的开发板1号孔
  4. 用一条USB线链接uart口到电脑上
  5. 参考图一的链接方法

安装开发环境

在vscode 上搜索 Espressif IDF, 然后根据指引安装esp-idf(注意要选master分支,否则是支持不了esp32s3)
LED灯闪烁程序

Espressif IDF 新建一个template 工程
把下面的代码复制进去

#include < stdio.h >
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
#define GPIO_OUTPUT_IO_1    1
void app_main(void)
{
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = (1 << GPIO_OUTPUT_IO_1);
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 1;
    gpio_config(&io_conf);
    int i = 0;
    for (; ;) {
        gpio_set_level(GPIO_OUTPUT_IO_1, i);
        if (i == 0) {
            i = 1;
        } else {
            i = 0;
        }
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

程序流程是这样

配置GPIO

#define GPIO_OUTPUT_IO_1    1 //定以GPIO口, 其中1 对应开发板上的数字
io_conf.intr_type = GPIO_PIN_INTR_DISABLE; //  禁用中断
io_conf.mode = GPIO_MODE_OUTPUT ; // GPIO口模式,当前为输出模式
io_conf.pin_bit_mask = (1<<GPIO_OUTPUT_IO_1); // 这个配置适用那些GPIO端口, 
io_conf.pull_down_en = 0; // 是否是下拉模式
io_conf.pull_up_en = 1; // 是否是上拉模式
gpio_config(&io_conf); // 使配置生效
  1. 设置GPIO 电平 1=high, 0 = low

gpio_set_level(GPIO_OUTPUT_IO_1, i); // 设置GPIO的电平, 控制LED亮灭
3. 延迟1秒

vTaskDelay(1000 / portTICK_PERIOD_MS); // freertos的方法
烧录程序

先查看开发板的端口


这里显示是COM3
然后编译固件

最后烧录固件到开发版上,烧录完成后开发板会自动重启执行新的程序.

然后输入, COM3是刚才看到的开发板的端口,按照自己实际来替换
idf.py -p COM3 flash