最近想要折腾下一个控制电机的东西,看到ESP32这系列芯片, 之前对这方面完出没接触,只是在大学的时候接触过C51单片机, 下面就一起开始从零学这东西吧~
首先我们需要以下材料
- ESP32S3开发板
- 600欧姆电阻
- LED灯
- 面包板
- 跳线若干
准备好材料后我们按以下方法链接全部材料
翻开ESP32S3开发板背后,在阵脚上写着 123456789 这些数字,这些是GPIO 的编号, 3V3是3.3V电源输出, G代表接地GND
- 线把开发板插入到面包板上 , 按照第一张图那样插
- 用条线链接G到面包板上的-孔
- 把LED 插入 +-孔(记得区分极性)
- 用一个600Ω的电阻插入面包板的+孔, 另一脚插入同排的开发板1号孔
- 用一条USB线链接uart口到电脑上
参考图一的链接方法
安装开发环境
在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 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);}}
程序流程是这样
- 配置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