ESP IDF开发入门之GPIO

8 篇文章 0 订阅
2 篇文章 0 订阅
本文介绍了如何使用ESP32的ESPIDF库进行GPIO的配置,包括引脚复位、功能选择、方向设置以及电平控制。通过示例代码展示了输出模式下控制LED灯闪烁,输入模式下读取按键状态,并实现了根据按键状态控制LED灯亮灭的功能。此外,还提及了使用结构体配置GPIO的方式。博主强调通过实际项目来学习和提升技能的重要性。
摘要由CSDN通过智能技术生成


前言

之所以开始进行ESP IDF的入门呢,是因为用一天看了下安卓开发,如果我们只是单纯的开发控制软件还是比较容易入门的,所以开始学习ESPIDF的使用,之后呢会使用ESP32开发一些简单的项目,写一个简单的安卓软件进行项目开发,磨练自己的技术,博主呢不是一个能够安安静静去看视频或咬文嚼字的人,从始至终觉得要学会一个东西还是需要去不断地用项目去磨练自己。

一、IO_MUX and GPIO Matrix

 

二、使用步骤

1.通过库函数配置

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "driver/gpio.h"

#define LED_PIN 2


void app_main(void)
{
     gpio_reset_pin(LED_PIN);                         //引脚复位
     gpio_pad_select_gpio(LED_PIN);                   //GPIO引脚功能选择
     gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);   //设置方向为输出
     while (1)
     {
        gpio_set_level(LED_PIN,1);                    //设置LED_PIN为高电平
        sleep(1);
        gpio_set_level(LED_PIN,0);                    //设置LED_PIN为低电平
        sleep(1);
     }

     
}

2.配置为输入模式

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "driver/gpio.h"

#define LED_PIN 2
#define KEY_PIN 5


void app_main(void)
{
     
     gpio_pad_select_gpio(KEY_PIN);                //模式设置
     gpio_set_direction(KEY_PIN, GPIO_MODE_INPUT); //方向输入
     gpio_pullup_en(KEY_PIN);                      //上拉使能
     gpio_pulldown_dis(KEY_PIN);                   //下拉失能
     int i = 0;
     while (true)
     {
         i=gpio_get_level(KEY_PIN);
         printf("%d\n", i);
         sleep(1);
        // gpio_set_level(LED_PIN,1);
        // sleep(1);
        // gpio_set_level(LED_PIN,0);
        // sleep(1);
     }

     
}

3.控制LED

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "driver/gpio.h"

#define LED_PIN 2
#define KEY_PIN 5


void app_main(void)
{
     gpio_reset_pin(LED_PIN&KEY_PIN);
     gpio_pad_select_gpio(LED_PIN&KEY_PIN);

     gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
     gpio_set_direction(KEY_PIN, GPIO_MODE_INPUT);
     gpio_pullup_en(KEY_PIN);
     gpio_pulldown_dis(KEY_PIN);
     int i = 0;
     while (true)
     {
         i=gpio_get_level(KEY_PIN);
         printf("%d\n", i);
        if(i==0){
           gpio_set_level(LED_PIN,1);  
        }else{
            gpio_set_level(LED_PIN,0); 
        }
        sleep(1);
     }

     
}

 4.GPIO结构体配置

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "driver/gpio.h"

#define LED_PIN 2
#define KEY_PIN 5


void app_main(void)
{
  gpio_config_t io_config;
 io_config.intr_type = GPIO_INTR_DISABLE;
 io_config.mode = GPIO_MODE_OUTPUT;
 io_config.pin_bit_mask =(1ULL<<LED_PIN);
 io_config.pull_down_en=0;
 io_config.pull_up_en=0;
 gpio_config(&io_config);
 int on=0;

 while (1)
 {
     on=!on;
     gpio_set_level(LED_PIN, on);
     printf("%d\n",on);
     sleep(1);
 }
 
     
}


 

 

总结

本文学习了韦东山老师关于ESP的视频,由于关于esp方面的视频还是比较少的,大部分的还是需要根据官方文档进行学习,再接再厉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值