文章目录[隐藏]
简介
ESP32
芯片有 40 个物理GPIO
pad。每个pad
都可用作一个通用IO
,或连接一个内部的外设信号。IO_MUX
、RTC IO_MUX
和GPIO
交换矩阵用于将信号从外设传输至GPIO pad
。这些模块共同组成了芯片的IO
控制。注意:其中
GPIO 34-39
仅用作输入管脚,其他的既可以作为输入又可以作为输出管脚。
GPIO6-11
通常用于SPI
闪存。
ESP-IDF GPIO
函数
GPIO
配置函数
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig);
作用:配置GPIO
基本功能
#define GPIO_OUTPUT_IO_0 22
#define GPIO_OUTPUT_PIN_SEL (1ULL<<GPIO_OUTPUT_IO_0) // 配置GPIO_OUT位寄存器
void gpio_init(void)
{
gpio_config_t io_conf; // 定义一个gpio_config类型的结构体,下面的都算对其进行的配置
io_conf.intr_type = GPIO_PIN_INTR_DISABLE; // 禁止中断
io_conf.mode = GPIO_MODE_OUTPUT; // 选择输出模式
io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL; // 配置GPIO_OUT寄存器
io_conf.pull_down_en = 0; // 禁止下拉
io_conf.pull_up_en = 0; // 禁止上拉
gpio_config(&io_conf); // 最后配置使能
}
GPIO
复位函数
esp_err_t gpio_reset_pin(gpio_num_t gpio_num);
作用:将GPIO
设为默认状态(启用GPIO
功能,启用上拉并禁用输入输出)
gpio_reset_pin(GPIO_NUM_5);
GPIO
中断设置函数
esp_err_t gpio_set_intr_type(gpio_num_t gpio_num, gpio_int_type_t intr_type);
作用:GPIO
设置中断触发类型
gpio_set_intr_type(GPIO_NUM_36, GPIO_INTR_NEGEDGE);
GPIO_INTR_DISABLE //禁用GPIO中断
GPIO_INTR_POSEDGE //GPIO中断类型:上升沿
GPIO_INTR_NEGEDGE //下降沿
GPIO_INTR_ANYEDGE //上升沿和下降沿
GPIO_INTR_LOW_LEVEL //输入低电平触发
GPIO_INTR_HIGH_LEVEL //输入高电平触发
GPIO
中断使能函数
esp_err_t gpio_intr_enable(gpio_num_t gpio_num);
作用:中断使能
gpio_intr_enable(GPIO_NUM_36);
注意:请不要在启用睡眠模式的情况下使用ADC
或Wi-Fi
时使用GPIO36
和GPIO39
的中断
GPIO
禁用中断函数
esp_err_t gpio_intr_disable(gpio_num_t gpio_num);
作用:禁止GPIO
中断信号
GPIO
输出电平函数
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level);
作用:GPIO
设置输出电平
gpio_set_level(GPIO_OUTPUT_IO_0, 0); // 把这个GPIO输出低电平
gpio_set_level(GPIO_OUTPUT_IO_0, 1); // 把这个GPIO输出高电平
GPIO
获得输入函数
int gpio_get_level(gpio_num_t gpio_num);
作用:GPIO
获得输入电平
gpio_get_level(GPIO_NUM_2)
GPIO
设置方向函数
esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)
作用:GPIO
设置引脚方向
gpio_set_direction(GPIO_NUM_5, GPIO_MODE_OUTPUT); // 把这个GPIO作为输出
gpio_set_direction(GPIO_NUM_2,GPIO_MODE_INPUT); //GPIO设置成输入
GPIO
设置电阻函数
esp_err_t gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull);
作用:配置GPIO
上拉/下拉电阻
GPIO_PULLUP_ONLY, /*!< 上拉 */
GPIO_PULLDOWN_ONLY, /*!< 下拉 */
GPIO_PULLUP_PULLDOWN, /*!< 上拉+下拉*/
GPIO_FLOATING, /*!< 浮空 */
gpio_set_pull_mode(GPIO_NUM_5,GPIO_PULLUP_ONLY);
GPIO
设置唤醒功能
esp_err_t gpio_wakeup_enable(gpio_num_t gpio_num, gpio_int_type_t intr_type);
作用:设置GPIO
唤醒功能
gpio_wakeup_enable(GPIO_NUM_2,GPIO_INTR_LOW_LEVEL);//低电平唤醒
gpio_wakeup_enable(GPIO_NUM_2,GPIO_INTR_HIGH_LEVEL);//高电平唤醒
GPIO
禁用唤醒功能
esp_err_t gpio_wakeup_disable(gpio_num_t gpio_num);
作用:禁止使用唤醒功能
版权声明:本文为CSDN博主「一月一星辰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43677266/article/details/121694538
暂无评论