本次实验是使用GOOUUU-ESP32-C3开发板,芯片型号为ESP32-C3-MINI-1,使用下载方式是USB串口,芯片资料:ESP32-C3-MINI-1/ESP32-C3-MINI-1U数据手册,通过VSCode中的espressif-idf插件开发。
一、硬件介绍
1、通过数据手册可以得知芯片的所引脚,且启动管脚为IO2、IO8和IO9。
2、查看开发板原理图可以得知开发板有一个三色LED的引脚为IO3、IO4、IO5,分别控制着红色,绿色和蓝色
二、点亮LED灯实验
1、打开VSCode,快捷键Ctrl+Shift+P打开命令面板,输入show exmaples projects打开示例程序,选择sample_project样本示例,里面是个空项目,并且选择不要出现中文或空格的路径保存,否则程序无法编译,会报错;
步骤1:打开示例项目
步骤2:选择样本示例,保存项目路径
2、通过硬件得知LED为IO3、IO4、IO5控制,本实验只控制蓝色LED,引脚为IO5,打开main.c文件,所有程序就在main.c文件编写了,首先就得引用所需的头文件,定义LED引脚,配置LED,控制LED亮灭;
步骤1:打开main.c文件
步骤2:引用头文件,定义LED引脚
#include "driver/gpio.h" //GPIO固件库
#define blueLED GPIO_NUM_2 //定义蓝色LED引脚
步骤3:配置LED推挽输出
gpio_reset_pin(blueLED); //复位LED
gpio_set_direction(blueLED, GPIO_MODE_OUTPUT); //配置LED输入输出
步骤4::通过硬件电路,得知LED一端连接VCC,另一端连接LED引脚,所以通过控制LED引脚高电平让LED灭,低电平让LED,但程序执行效率很快,肉眼无法直观看到LED亮灭,所以需要延时;
a、引用头文件
#include "freertos/FreeRTOS.h" //FreeRTOS固件库
#include "freertos/task.h" //延时函数需要用到该头文件
b、在app_main函数中循环
while(true)
{
gpio_set_level(blueLED, 0); //LED亮
vTaskDelay(1000 / portTICK_PERIOD_MS); //延时1000ms,portTICK_PERIOD_MS为毫米周期
gpio_set_level(blueLED, 1); //LED灭
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
main.c程序
#include <stdio.h>
#include "driver/gpio.h" //GPIO固件库
#include "freertos/FreeRTOS.h" //FreeROTS固件库
#include "freertos/task.h" //延时函数需要用到该头文件
#define blueLED GPIO_NUM_5 //定义蓝色LED引脚
void app_main(void)
{
gpio_reset_pin(blueLED); //复位LED
gpio_set_direction(blueLED, GPIO_MODE_OUTPUT); //配置LED输入输出
while (true)
{
gpio_set_level(blueLED, 0); //LED亮
vTaskDelay(1000 / portTICK_PERIOD_MS); //延时1000ms,portTICK_PERIOD_MS为毫米周期
gpio_set_level(blueLED, 1); //LED灭
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
3、连接开发板,在VSCode底部有espressif工具,选择对应的端口号、芯片型号和烧录方式,进行程序编译,最后点击下载,查看实验效果;
实验效果:
二、呼吸灯实验
1、本次实验是利用LED PWM控制器实现的呼吸灯,具体可以查看