软件学习——gpio(6)

gpio

ESP32 芯片具有 40 个物理GPIO 焊盘。某些GPIO焊盘无法使用或芯片封装上没有相应的引脚。每个焊盘可用作通用I/O,或可连接到内部外设信号。

请注意,GPIO6-11通常用于SPI闪存。

GPIO34-39只能设置为输入模式,没有软件上拉或下拉功能。

还有单独的“RTC GPIO”支持,当GPIO路由到“RTC”低功耗和模拟子系统时,该支持将起作用。这些引脚功能可在深度睡眠、超低功耗协处理器运行时或使用ADC/DAC/等模拟功能时使用。

gpio_config_t:配置通用信息总局的模式,上拉,下拉,中断触发类型选一种

配置一个或多个gpio,

eg:GPIO 18和GPIO 19:

#include "driver/gpio.h"

void app_main(){

gpio_config_tconfig = {

.pin_bit_mask= (1ull << 18)|(1ull << 19),//选择指定的gpio口

.mode = // 设置输入输出模式

GPIO_MODE_DISABLE //GPIO 模式:禁用输入和输出

GPIO_MODE_INPUT //GPIO 模式:仅输入

GPIO_MODE_OUTPUT //GPIO 模式:仅输出模式

GPIO_MODE_OUTPUT_OD //GPIO 模式:仅在漏极开路模式下输出

GPIO_MODE_INPUT_OUTPUT_OD //GPIO 模式:输出和输入,漏极开路模式

GPIO_MODE_INPUT_OUTPUT //GPIO 模式:输出和输入模式

,

. pull_up_en= 0x0/ 0x1 , //表示是否启用内部上拉电阻(0x0禁用 , 0x1 启动)

.pull_down_en= 0x0/ 0x1 , //表示是否启用内部下拉电阻(0x0禁用 , 0x1 启动)

.intr_type= //设置中断类型

GPIO_INTR_DISABLE=0 //GPIO 中断类型:禁用 GPIO 中断

GPIO_INTR_POSEDGE=1 //GPIO 中断类型:上升沿

GPIO_INTR_NEGEDGE=2 //GPIO 中断类型:下降沿

GPIO_INTR_ANYEDGE=3 //GPIO中断类型:上升沿和下降沿

GPIO_INTR_LOW_LEVEL=4 //GPIO中断类型:输入低电平触发

GPIO_INTR_HIGH_LEVEL=5 //GPIO中断类型:输入高电平触发

}

//传入gpio_config_t指针

gpio_config(&ioConfig);

}

  1. 设置GPIO方向(输入 或者 输出)

配置 GPIO 方向,例如 output_only、input_only、output_and_input

函数gpio_set_direction(gpio_num_t gpio_num , gpio_mode_t mode)

2. GPIO 设置输出电平。0: 低电平;1:高电平

gpio_set_level(gpio_num_t gpio_num , uint32_t level)

3. GPIO 获取输入高低电平。

如果未为输入(或输入和输出)配置焊盘,则返回值始终为0。

level:0输入电平为 0

level:1输入电平为 1

gpio_get_level(gpio_num_t gpio_num )

eg:将GPIO配置为输入,当GPIO16电平改变时打印当前的电平。

#include "driver/gpio.h"

#include <stdio.h>

void app_main(){

intmLevel = 0;

gpio_set_direction(16,GPIO_MODE_INPUT);

gpio_get_level(16);

while(1){

if(mLevel != (temp = gpio_get_level(16))){

mLevel= temp;

if(temp){

printf("HIGHLevel\n");

}else{

printf("LOWLevel\n");

}

}

}

}

配置 GPIO 上拉/下拉电阻:只有同时支持输入和输出的引脚才具有集成的上拉和下拉电阻。仅输入 GPIO 34-39 则没有。

gpio_set_pull_mode(gpio_num_t gpio_num , gpio_pull_mode_t pull)

pull=

  1. GPIO_PULLUP_ONLY —— 仅上拉
    2. GPIO_PULLDOWN_ONLY —— 仅下拉
    3. GPIO_PULLUP_PULLDOWN —— 全部启用
    4. GPIO_FLOATING —— 悬空这个 GPIO

设置中断类型

gpio_set_intr_type(18, GPIO_INTR_NEGEDGE);

代码思路详解:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值