乐鑫技术交流
直播中

幽默

9年用户 762经验值
擅长:362163
私信 关注
[问答]

ESP32 wroom UE在使用GPIO32的时候,IO不响应中断是什么原因?

我用的是ESP32 wroom UE 模块,使用中断例程,在使用GPIO32 的时候,发现这个IO不响应中断(试过一部分IO都能响应中断的),请问这是什么原因,怎么修改。设置代码如下:
//配置GPIO结构体
        gpio_config_t io_conf;
        io_conf.intr_type = GPIO_INTR_ANYEDGE;                // 下降沿和上升沿触发中断
        io_conf.pin_bit_mask = 1 << key_gpio_pin;        // 设置GPIO号
        io_conf.mode = GPIO_MODE_INPUT;                                // 模式输入
        io_conf.pull_up_en = GPIO_PULLUP_ENABLE;        // 端口上拉使能
        gpio_config(&io_conf);

        // 设置GPIO中断类型
        gpio_set_intr_type(key_gpio_pin, GPIO_INTR_ANYEDGE);// 下降沿和上升沿触发中断
        
        // 安装GPIO中断服务
    gpio_install_isr_service(0);//设置中断优先级 ???

        // 添加GPIO中断事件回调函数
        gpio_isr_handler_add(key_gpio_pin, gpio_isr_handler, (void *) key_gpio_pin);
                                                                                                                                                                 

回帖(1)

刀马旦

2024-6-18 16:22:58
在使用ESP32 WROOM UE模块时,GPIO32不响应中断的原因可能有以下几点:

1. GPIO32的特殊性:ESP32 WROOM UE模块的GPIO32是一个特殊的GPIO,它与GPIO33共享一个中断。当GPIO32和GPIO33同时配置为中断时,它们会共享同一个中断号。因此,如果你只配置了GPIO32,可能会导致中断不触发。

2. 配置错误:请检查你的GPIO配置代码是否正确。以下是一些可能的问题:

   a. 确保`key_gpio_pin`变量的值是32,表示GPIO32。
   b. 确保`io_conf.mode`设置为`GPIO_MODE_INPUT`,因为GPIO32需要作为输入引脚。
   c. 确保`io_conf.pull_up_en`和`io_conf.pull_down_en`设置正确,根据需要启用或禁用上拉或下拉电阻。

3. 中断服务程序(ISR)问题:请检查你的中断服务程序是否正确处理了GPIO32的中断。确保在ISR中正确地识别和处理GPIO32的中断事件。

4. 其他硬件或软件问题:如果以上原因都排除了,可能存在其他硬件或软件问题。例如,GPIO32的引脚可能受到外部干扰,或者软件中存在其他逻辑错误。

为了解决这个问题,你可以尝试以下步骤:

1. 确保GPIO32和GPIO33的配置正确。如果需要同时使用GPIO32和GPIO33,请确保它们都配置为中断,并共享同一个中断服务程序。

2. 检查中断服务程序(ISR)是否正确处理GPIO32的中断。确保在ISR中正确地识别和处理GPIO32的中断事件。

3. 如果问题仍然存在,尝试使用其他GPIO引脚(例如GPIO0或其他可用的GPIO)作为替代,看看问题是否仍然存在。这有助于确定问题是否与特定的GPIO32引脚有关。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分