【笔记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);
}

工程可以下载

相关推荐
chshang199212 小时前
映翰通IR305路由器 4G 在线,但云平台为什么还是掉线?
物联网·5g·边缘计算
深圳雨林凯AI12 小时前
图案裂变的“风格归一化“设计思路:主体保得住,画风才拉得齐|雨林凯AI技术笔记
人工智能·笔记
pnoker12 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
star learning white13 小时前
STM32入门学习5
stm32·嵌入式硬件·学习
新晨单片机设计13 小时前
S006A-基于STM32单片机温湿度检测系统【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
冬木家居13 小时前
40㎡客厅变形记,小家住出大自由[特殊字符]
android·经验分享·笔记·智能家居·微信公众平台
摇滚侠13 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
星恒讯工业路由器14 小时前
农村宽带覆盖难?无线专网方案正在改写“最后一公里”规则
网络·物联网·网桥·无线网桥·农村宽带覆盖·无线专网·户外网络
逐步前行15 小时前
ESP32-S3-分区表(Partition Table)
单片机
星河单片机15 小时前
STM32驱动HS‑S37A水位传感器+OLED完整实验讲解
stm32·单片机·嵌入式硬件