ESP32之IDF下使用GPIO中断

本文详细介绍了如何在ESP32中配置GPIO,包括设置中断类型、IO模式,以及上下拉电阻,并展示了如何安装中断服务和注册中断回调函数。文章特别提到了两种中断回调函数的注册方式及其区别,对于理解和应用ESP32的GPIO中断功能具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公众号:嵌入式不难

本文仅供参考学习,如有错误之处,欢迎留言指正。

步骤
  1. 配置GPIO
  2. 安装GPIO中断服务
  3. 为GPIO添加中断回调函数
代码
#define GPIONum		5
static void IRAM_ATTR GPIOISRHandler(void* arg)
{
}
void gpio_cfg(void)
{
//配置GPIO
    gpio_config_t io_conf = {};//初始化为0
    io_conf.intr_type = GPIO_INTR_NEGEDGE;//配置触发中断的类型
    io_conf.mode = GPIO_MODE_INPUT;//配置IO的模式
    io_conf.pin_bit_mask = (1<<GPIONum);//选择IO
    io_conf.pull_down_en = 0;//是否下拉
    io_conf.pull_up_en = 1;//是否上拉
    gpio_config(&io_conf);
//安装GPIO中断服务
	gpio_install_isr_service(0);//中断优先级
//为GPIO添加中断回调函数
	gpio_isr_handler_add(GPIONum, GPIOISRHandler, (void*)GPIONum);
/*注意事项
事项1: 
gpio_install_isr_service 的参数只能是以下4个: 
0/ESP_INTR_FLAG_LEVEL1/ESP_INTR_FLAG_LEVEL2/ESP_INTR_FLAG_LEVEL3/ESP_INTR_FLAG_LOWMED

事项2: 
注册中断回调函数有两种方式:
方式1:
1.先调用 gpio_install_isr_service 安装GPIO中断服务
2.再调用 gpio_isr_handler_add 为某一个IO指定特定的中断服务函数
方式2:
1.直接调用 gpio_isr_register 为所有GPIO中断注册统一的中断服务函数
两种方式的区别:
方式1下,每一个IO可以拥有属于自己的中断回调函数
方式2下,所有IO只能有一个统一的中断回调函数
*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值