zoukankan      html  css  js  c++  java
  • ESP32 GPIO入门之闪灯

    第一章 ESP32 GPIO入门之闪灯

     

    概述

        本文为ESP32 学习,GPI0入门之闪灯,更多学习目录请查阅ESP32学习目录

    1.1 基本概念

        ESP32 芯片有 40 个物理 GPIO pad,有部分 GPIO pad 不可用或者没有对应的芯片封装上的管脚。每个 pad 都可用作一个通用 IO,或连接一个内部的外设信号的。 IO_MUX、 RTC IO_MUX 和 GPIO 交换矩阵用于将信号从外设传输至 GPIO pad。这些模块共同组成了芯片的 IO 控制。

    1.1.1种输入输出模式

    GPIO_MODE_INPUT 输入
    GPIO_MODE_OUTPUT 输出
    GPIO_MODE_OUTPUT_OD 开漏输出
    GPIO_MODE_INPUT_OUTPUT_OD 开漏输入输出
    GPIO_MODE_INPUT_OUTPUT 输入输出

    1.1.2 中断类型

    GPIO_INTR_DISABLE 禁用GPIO中断
    GPIO_INTR_POSEDGE GPIO中断类型:上升沿
    GPIO_INTR_NEGEDGE 下降沿
    GPIO_INTR_ANYEDGE 上升沿和下降沿
    GPIO_INTR_LOW_LEVEL 输入低电平触发
    GPIO_INTR_HIGH_LEVEL 输入高电平触发

    1.1.3 上下拉使能

    GPIO_PULLUP_DISABLE 禁用GPIO上拉电阻
    GPIO_PULLUP_ENABLE 启用GPIO上拉电阻
    GPIO_PULLDOWN_DISABLE 禁用GPIO下拉电阻
    GPIO_PULLDOWN_ENABLE 启用GPIO下拉电阻

    1.1.4 驱动能力

    GPIO_DRIVE_CAP_0 弱 weak
    GPIO_DRIVE_CAP_1 强
    GPIO_DRIVE_CAP_2 默认值
    GPIO_DRIVE_CAP_DEFAULT 默认值
    GPIO_DRIVE_CAP_3 最强

    1.2  实现函数分析

    /* GPIO Example
     * 
     * Brief:
     * This test code shows how to configure gpio and blink led
     *
     * USED GPIO:  GPIO16(blue led)
     *
     * func: blink led
     *
     * note:
     *
     */
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include "freertos/FreeRTOS.h"
    #include "freertos/task.h"
    #include "freertos/queue.h"
    #include "driver/gpio.h"
    
    #include "esp_system.h"
    #include "esp_err.h"
    #include "esp_event_loop.h"
    #include "esp_event.h"
    #include "esp_attr.h"
    #include "esp_log.h"
    #include "esp_eth.h"
    
    
    #define GPIO_BLUE_LED 16
    
    static const char *TAG = "GPIO_Example";
    
    void hw_gpio_init(void)
    {
        gpio_config_t io_conf;
    
        //disable interrupt
        io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
        //set as output mode
        io_conf.mode = GPIO_MODE_OUTPUT;
        //bit mask of the pins that you want to set,e.g.GPIO16
        io_conf.pin_bit_mask = (1<<GPIO_BLUE_LED);
        //disable pull-down mode
        io_conf.pull_down_en = 0;
        //disable pull-up mode
        io_conf.pull_up_en = 1;
        //configure GPIO with the given settings
        gpio_config(&io_conf);
    }
    
    void app_main()
    {
        hw_gpio_init();
        while(1)
        {
    //        ESP_EARLY_LOGE(TAG, "blink led. E");
    //        ESP_EARLY_LOGW(TAG, "blink led. W");
    //        ESP_EARLY_LOGI(TAG, "blink led. I");
    //        ESP_EARLY_LOGD(TAG, "blink led. D");
    //        ESP_EARLY_LOGV(TAG, "blink led. V");
            
            gpio_set_level(GPIO_BLUE_LED, 0);
            vTaskDelay(1000 / portTICK_RATE_MS);
            gpio_set_level(GPIO_BLUE_LED, 1);
            vTaskDelay(1000 / portTICK_RATE_MS);
        }
    }
    View Code
  • 相关阅读:
    js中的同步与异步
    全局刷新 局部刷新
    url的组成
    Linux云自动化运维第十二课
    Linux云自动化运维第十一课
    Linux云自动化运维第十课
    Linux云自动化运维第九课
    Linux云自动化运维第八课
    Linux云自动化运维第七课
    Linux云自动化运维第六课
  • 原文地址:https://www.cnblogs.com/mrsandstorm/p/7657806.html
Copyright © 2011-2022 走看看