【笔记2-6】ESP32:GPIO控制LED亮灭

主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发板用ESP-WROOM-32,其实坑还挺多的,慢慢来吧。

通过控制GPIO高低电平来控制LED灯的亮灭,对于ESP32的供电系统,3.3v是高电平,0v是低电平

以下代码创建了一个任务,并每500ms反转一次GPIO电平,其中,初始化时,使用了gpio_config_t结构体,在ESP32工程中,常通过这种方式配置外设。

c 复制代码
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/gpio.h"

#define LED_GPIO GPIO_NUM_27

//500ms翻转1次任务
void led_run_task(void* param)
{
    int gpio_level = 0;
    while (1)
    {
        gpio_level = gpio_level?0:1;//翻转电平
        gpio_set_level(LED_GPIO , gpio_level);//设置电平
        vTaskDelay(pdMS_TO_TICKS(500));
    }
    
}

void app_main(void)
{
    gpio_config_t led_cfg ={
        .pin_bit_mask = (1<<LED_GPIO),//选择GPIO引脚,可以同时配置多个
        .pull_up_en = GPIO_PULLUP_DISABLE,//因为是输出,不需要配置上拉
        .pull_down_en = GPIO_PULLDOWN_DISABLE,//也不需要下拉
        .mode = GPIO_MODE_OUTPUT,//设为输出模式
        .intr_type = GPIO_INTR_DISABLE,//不需要中断
    };

    gpio_config(&led_cfg);//初始化
    xTaskCreatePinnedToCore(led_run_task , "led" , 2048 , NULL , 3 , NULL , 1);
}

工程可以下载

相关推荐
库玛西19 分钟前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
深圳市恒锐丰科技杨生40 分钟前
EG2121 250V 单路半桥栅极驱动芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
qq_401700411 小时前
STM32 UART+DMA+IDLE 接收完整实现:从“能跑“到“不丢包“
单片机
superxxd1 小时前
基于rust的多平台原生GIS引擎
人工智能·物联网·实时音视频
wuyk5552 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
深圳市恒锐丰科技杨生2 小时前
EG1165 / EG1165S 600V 半桥 PWM 控制芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
Rabitebla2 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
YCOSA20252 小时前
迎双节 雨晨 Windows 11 IoT 企业版 LTSC 26H1 轻装 28000.2956
windows·物联网
库玛西2 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
Ricon组态薄荷糖3 小时前
Ricon组态系统:工业组件开发指南与实践
前端·后端·物联网