零. 声明


本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!

第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线做一个介绍,让大家知其然又知其所以然!

第三篇:目前比较火热的GUI LVGL介绍,主要会设计LVGL7.1,LVGL8的移植介绍,并且也会介绍各个组件,知道原理后,最后,我们会推出一款组态软件来构建我们的GUI,来提升我们的效率!

第四篇:ESP32-蓝牙,熟悉我的,应该都知道,我即使从事蓝牙协议栈的开发的,所以这个是我们独有的优势,在这一篇章,我们会提供不仅仅是蓝牙应用方法的知识,也会应用结合蓝牙底层协议栈的理论,让你彻底从上到下打通蓝牙任督二脉!

第五篇:Wi-Fi介绍,熟悉我的,应该也知道,我们也做过一款sdio wifi的驱动教程板子,所以在wifi这方面我们也是有独有的优势,在这一篇章,我们同样不仅仅提供Wi-Fi应用方面的知识,也会结合底层理论,让你对Wi-Fi有一个清晰的认知!

另外,我们的教程包括但是不局限于以上篇章,为了给你一个更好的导航,以下信息尤其重要,请详细查看!!

------------------------------------------------------------------------------------------------------------------------------------------

购买开发板(点击我)

文档目录(点击我)

Github代码仓库(点击我)

蓝牙交流扣扣群:539357317

微信公众号↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

------------------------------------------------------------------------------------------------------------------------------------------

其实相信当你在看这份文档的时候你已经对 LED 的点亮了如指掌了, 但是我们还是以 “一灯大师”的身份来开始本章。

一.LED原理图

如图所示,我们的板子上目前只有一个user led,挂在ESP32的IO17上,输出低电平电量,输出高电平熄灭

二. GPIO的初始化,控制电平来点亮/熄灭LED

整个GPIO的初始化以及点亮熄灭的操作我们都是用esp-idf框架中的API,API连接如下

GPIO & RTC GPIO - ESP32 - — ESP-IDF 编程指南 v4.4 文档

1.GPIO的初始化

#define LED_PIN    17
#define LED_PIN_SEL  (1<<LED_PIN)

/******************************************************************************
 * func name   : bsp_led_init
 * para        : NULL
 * return      : led init result
 * description : LED init,LED->IO17
******************************************************************************/
void bsp_led_init()
{
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = LED_PIN_SEL;
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 0;
    gpio_config(&io_conf);
}

GPIO的配置是通过gpio_config这个api来设置的

 2.控制GPIO的电平

/* Operate LED on/off */
#define LED_OFF gpio_set_level(LED_PIN, 1)
#define LED_ON  gpio_set_level(LED_PIN, 0)

GPIO的高低电平是通过gpio_set_level API来设置的

三.完整代码

#include<stdio.h>

#include"freertos/FreeRTOS.h"
#include"freertos/task.h"
#include"driver/gpio.h"
#define LED_PIN    17
#define LED_PIN_SEL  (1<<LED_PIN)
/* Operate LED on/off */
#define LED_OFF gpio_set_level(LED_PIN, 1)
#define LED_ON  gpio_set_level(LED_PIN, 0)
/******************************************************************************
 * func name   : bsp_led_init
 * para        : NULL
 * return      : led init result
 * description : LED init,LED->IO17
******************************************************************************/
void bsp_led_init()
{
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = LED_PIN_SEL;
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 0;
    gpio_config(&io_conf);
}
void bsp_delay_ms(uint32_tcms)
{
    TickType_t xDelay = cms / portTICK_PERIOD_MS;
    
    vTaskDelay( xDelay );
}
void app_main(void)
{
    uint32_t count = 0;
    bsp_led_init();
    while(1)
    {
        if(count % 2 == 0)
            LED_ON;
        else
            LED_OFF;
        
        count++;
        bsp_delay_ms(1000);
    }
}

我们整个程序展示的效果是:LED量1S亮,1S灭,交替循环

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐