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);
}
设置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=
GPIO_PULLUP_ONLY —— 仅上拉
2. GPIO_PULLDOWN_ONLY —— 仅下拉
3. GPIO_PULLUP_PULLDOWN —— 全部启用
4. GPIO_FLOATING —— 悬空这个 GPIO
设置中断类型
gpio_set_intr_type(18, GPIO_INTR_NEGEDGE);
代码思路详解:
![](https://i-blog.csdnimg.cn/blog_migrate/b686e147bf4b83b50d555eb6f614c123.png)