ESP32C3点亮LED灯

准备

开发板:合宙ESP32C3开发板,USB数据线,VSCode+ESP32插件

代码

通过开发板的原理图可知两个LED分别连接在IO12和IO13引脚上:

相关库函数

参考自ESP32官网:API手册
引入头文件:components/driver/include/driver/gpio.h

1. GPIO模式设置

esp_err_t gpio_config(constgpio_config_t *pGPIOConfig)

参数是个结构体指针,拥有四个成员:
uint64_t pin_bit_mask: 使用位掩码进行设置,每个位映射到一个 GPIO‎
gpio_mode_tmode: ‎设置输入/输出模式‎
gpio_pullup_tpull_up_en: 上拉使能
gpio_pulldown_tpull_down_en: 下拉使能
gpio_int_type_tintr_type: 中断类型

2. GPIO重置

esp_err_t gpio_reset_pin(gpio_num_tgpio_num)

‎将一个IO口重置为默认状态(选择GPIO功能,启用上拉并禁用输入和输出)

3. 输出电平

esp_err_t gpio_set_level(gpio_num_tgpio_num, uint32_t level)

4. 设置方向

esp_err_tgpio_set_direction(gpio_num_tgpio_num, gpio_mode_tmode)

方向选择为GPIO_MODE_OUTPUTGPIO_MODE_INPUT

整体代码

LED闪烁代码修改自官方例程:blink

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"static const char *TAG = "example";/* 定义LED引脚 */
#define BLINK_GPIO_1 12
#define BLINK_GPIO_2 13static uint8_t s_led_state = 0;static void blink_led(void)
{/* Set the GPIO level according to the state (LOW or HIGH)*/gpio_set_level(BLINK_GPIO_1, s_led_state);gpio_set_level(BLINK_GPIO_2, s_led_state);
}static void configure_led(void)
{ESP_LOGI(TAG, "Example configured to blink GPIO LED!");gpio_reset_pin(BLINK_GPIO_1);gpio_reset_pin(BLINK_GPIO_2);/* Set the GPIO as a push/pull output */gpio_set_direction(BLINK_GPIO_1, GPIO_MODE_OUTPUT);gpio_set_direction(BLINK_GPIO_2, GPIO_MODE_OUTPUT);
}void app_main(void)
{/* Configure the peripheral according to the LED type */configure_led();while (1) {ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");blink_led();/* Toggle the LED state */s_led_state = !s_led_state;vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);}
}

下载至开发板后可看到两个LED开始闪烁。

呼吸灯

相关库函数

后续补充

整体代码

设置两个任务,一个任务让LED1闪烁,一个任务让LED2呼吸。

#include <stdio.h>
#include "driver/gpio.h"
#include "driver/ledc.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"#define LED1_PIN 12
#define LED2_PIN 13TaskHandle_t xHandle_task_led = NULL;/*** @brief led_pwm task**/
void app_led_pwm(void *pvParameters)
{/* setup */ledc_timer_config_t ledc_timer = {.speed_mode = LEDC_LOW_SPEED_MODE,.timer_num = LEDC_TIMER_0,.duty_resolution = LEDC_TIMER_13_BIT,.freq_hz = 5000,.clk_cfg = LEDC_AUTO_CLK,};ledc_channel_config_t ledc_channel_0 = {.channel = LEDC_CHANNEL_0,.duty = 0,.gpio_num = LED2_PIN,.speed_mode = LEDC_LOW_SPEED_MODE,.hpoint = 0,.timer_sel = LEDC_TIMER_0,};ledc_timer_config(&ledc_timer);ledc_channel_config(&ledc_channel_0);/* endless */for (;;){for (int i = 0; i < 8191; i += 10){ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, i);ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);vTaskDelay(pdMS_TO_TICKS(10));}for (int i = 8191; i > 0; i -= 10){ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, i);ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);vTaskDelay(pdMS_TO_TICKS(10));}vTaskDelay(pdMS_TO_TICKS(500));}
}/*** @brief main task**/
void app_main(void)
{xTaskCreatePinnedToCore(app_led_pwm, "task-led_pwm", 2048, NULL, 1, &xHandle_task_led, tskNO_AFFINITY);gpio_config_t led = {.pin_bit_mask = 1 << LED1_PIN,.mode = GPIO_MODE_OUTPUT,.pull_up_en = GPIO_PULLUP_DISABLE,.pull_down_en = GPIO_PULLDOWN_DISABLE,.intr_type = GPIO_INTR_DISABLE,};gpio_config(&led);int state = 0;for (;;){state = !state;gpio_set_level(LED1_PIN, state);vTaskDelay(pdMS_TO_TICKS(500));}
}

[ESP32]点亮LED灯相关推荐

  1. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  2. STM32F 103C8T6开发板 点亮LED灯

    每组IO口含下面7个寄存器.7个寄存器可以控制一组GPIO的16个IO口. GPIOx_CRL:端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ ...

  3. STC89C52单片机 点亮LED灯

    点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...

  4. Raspberry PI 系列 —— 裸机点亮LED灯

    Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...

  5. 蓝桥杯小白系列之汇编点亮led灯

    蓝桥杯小白系列之汇编点亮led灯 1.源代码 2.逐条分析 (1)ORG 0000H (2)START: 伪指令,编译器可识别,单片机不可识别,可以随便起. (3)蜂鸣器设置 蓝桥板插电以后蜂鸣器常会 ...

  6. 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)

    前言 在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯  面向初学者   如果 ...

  7. STM8学习笔记---点亮LED灯

    对单片机操作时一般有三个步骤,1.系统时钟选择.2.单片机外设初始化.3主程序编写. 同样要点亮LED灯时,也要按照这个步骤来. 首先选择系统时钟,打开STM8S中文参考手册,找到时钟寄存器 可以看到 ...

  8. 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...

  9. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

最新文章

  1. App设计灵感之十二组精美的数据图表展示App设计案例
  2. 解决del找不到关键词‘province‘的问题和思想
  3. 牛客 - 共鸣问题(贪心+思维)
  4. 轻量级锁_并发编程实战05:锁的状态
  5. Apollo进阶课程㊱丨Apollo ROS深入介绍
  6. 换行符javajava去除字符串中的空格、回车、换行符、制表符
  7. python 之路,200行Python代码写了个打飞机游戏!
  8. KindEditor 插件API使用说明
  9. sc.textFile()默认读取本地系统文件还是HDFS系统文件?
  10. 快速排序算法_经常用到的的排序(快速排序和归并排序)简单的计算机算法学习...
  11. MSP430F415IRTDR
  12. xp系统启动时0x0000007B(0XF799A524,0XC0000034,0X00000000,0X00000000)错误
  13. onedrive电脑手机不同步_关于OneDrive,移动端同步以及显示不及时的问题。
  14. 怎样将pdf压缩得很小?如何把pdf压缩到最小?怎么把pdf压缩到最小?如何把pdf文档压缩变小?怎么将pdf文档压缩至更小?怎么把pdf压缩到最小方法软件网站有哪些?
  15. Java中for循环的用法(亲测)
  16. Javascript 对象不支持此属性或方法,Object doesn’t support this property or method
  17. 替换运动学插件TRAC-IK
  18. 《用Chrome学编程》真心话大冒险
  19. c语言测量身体健康的程序,c++ c语言 学生健康管理系统.doc
  20. python在水文领域中的应用_python在水利工程或者水文方向上有什么案例可以学习一下么?或者还要学什么库。?...

热门文章

  1. win xp 读写 mac 的时间机器移动硬盘
  2. 雷神推出行业首款浸没式水冷游戏主机 官宣LGD战队合作
  3. 计算机网络新手实操,嗜血印新手操作入门指南 游戏基础玩法攻略介绍
  4. 数据中心机柜PDU应该怎么选?
  5. Dell T110 S100如何创建磁盘阵列
  6. list_for_each,list_for_each_entry和list_for_each_entry_safe
  7. MSF小练习——MSF的arp_sweep主机存活扫描
  8. html中购物车小球飞入的效果,vue项目中css3实现加入购物车小球抛物线飞入动画效果...
  9. 十六进制转换成十进制的方法
  10. NO.3.2-图片处理