ESP32S3 GIPO 基本操作-点灯

Luna
4 min readNov 6, 2021

--

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

首先我们需要以下材料

  • ESP32S3开发板
  • 600欧姆电阻
  • LED灯
  • 面包板
  • 跳线若干

准备好材料后我们按以下方法链接全部材料

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

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

参考图一的链接方法

安装开发环境

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

LED灯闪烁程序

  1. Espressif IDF 新建一个template 工程
  2. 把下面的代码复制进去
#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    1void 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);}}

程序流程是这样

  1. 配置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); // 使配置生效

2. 设置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

--

--

Luna
Luna

No responses yet