我正在做一个带有数字键盘的项目,这是用nanoFramework(CoreLibrary 1.9.0 p5,Esp32 1.3.2 p9)编程的ESP32。 现在,我想通过按下其中一个按钮上的按键来唤醒控制器。 用于处理矩阵的代码可以正常工作,按钮可以响应并且可以正常工作:
var row4 = controller.OpenPin(32);
row4.SetDriveMode(GpioPinDriveMode.Output);
...
var col3 = controller.OpenPin(12);
col3.SetDriveMode(GpioPinDriveMode.InputPullDown);
在睡觉之前,我将驱动模式重新定义为3.3V时有一个引脚:
Sleep.EnableWakeupByPin(Sleep.WakeupGpioPin.Pin32, 1);
col3.SetDriveMode(GpioPinDriveMode.OutputOpenDrainPullUp);
Sleep.StartLightSleep();
因此ESP32会按预期进入睡眠状态,但是我无法通过32号针将其唤醒。
我尝试过的事情:
WakeupGpioPin
枚举只包含普通的GPIO编号。EnableWakeupByPin
中的“ level”参数似乎是电压电平和1蜂鸣。但是,我也尝试了0。答案 0 :(得分:1)
针脚编号根据Espressif文档。除非被应用程序使用,否则在调用EnableWakeupByPin之前不需要配置GPIO引脚。
我已经测试过了,看来Sleep.EnableWakeupByPin()无法正常工作。我们将调查原因并予以解决。
尝试使用Sleep.EnableWakeupByMultiPins()。我已经测试过并且可以正常工作。
Sleep.EnableWakeupByMultiPins(Sleep.WakeupGpioPin.Pin32, Sleep.WakeupMode.AnyHigh);