【问题标题】:ESP8266 GPIO 16 cannot be used as a buttonESP8266 GPIO 16 不能用作按钮
【发布时间】:2018-11-27 21:14:23
【问题描述】:

我有以下代码,但我看不到任何日志消息:

void gpio_int_cb(int pin, void *arg) {
    LOG(LL_INFO, ("button pushed"));
    (void) pin;
    (void) arg;
}

extern "C" enum mgos_app_init_result mgos_app_init(void) {

    int pin_button = 16;

    mgos_gpio_set_pull(pin_button, MGOS_GPIO_PULL_DOWN);
    mgos_gpio_set_mode(pin_button, MGOS_GPIO_MODE_INPUT);
    mgos_gpio_enable_int(pin_button);
    mgos_gpio_set_int_handler(pin_button, MGOS_GPIO_INT_EDGE_POS, gpio_int_cb, NULL);

}

我错过了什么吗?

【问题讨论】:

  • 当用电压表按下开关时,我会检查开关是否实际工作。还要检查 pin_button 应该是 5(我在 pin 号和物理 pin 之间找不到任何文档)。此外,我会在启用它之前安装处理程序(避免未处理中断的不太可能但可能的竞争条件,因为启用时尚未安装处理程序)。您总是可以通过读取引脚上的当前值来测试它是否会发生变化。
  • @Fred。该图仅供参考...我使用的是 GPIO16,不幸的是它不能与中断一起使用

标签: c mongoose-os


【解决方案1】:

ESP8266 GPIO16 不能配置中断。来自 ESP8266 technical reference:

  1. GPIO16相关API 与其他IO接口不同,GPIO16(XPD_DCDC)属于RTC模块,而不是通用的GPIO 模块。可用于在深度睡眠时唤醒芯片;它可以 可配置为输入或输出模式; 但不能触发 IO 打断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多