公众号:嵌入式不难
本文仅供参考学习,如有错误之处,欢迎留言指正。
步骤
- 配置GPIO
- 安装GPIO中断服务
- 为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只能有一个统一的中断回调函数
*/
}