如何解决nanoFramework ESP32键盘睡眠后未唤醒
我正在做一个带有数字键盘的项目,这是用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号针将其唤醒。
我尝试过的事情:
- 对于RTC引脚,引脚编号似乎有些奇怪。 Pin32似乎是RTC-Pin9。但是
WakeupGpioPin
枚举只包含普通的GPIO编号。 - 试图交换两者,即Pin12作为WakeupPin和Pin32作为上拉。
- 从外部将引脚拉高或拉低-没有效果
- 根据espressif Docs,
EnableWakeupByPin
中的“ level”参数似乎是电压电平和1蜂鸣。但是,我也尝试了0。
解决方法
针脚编号根据Espressif文档。除非被应用程序使用,否则在调用EnableWakeupByPin之前不需要配置GPIO引脚。
我已经测试过了,看来Sleep.EnableWakeupByPin()无法正常工作。我们将调查原因并予以解决。
尝试使用Sleep.EnableWakeupByMultiPins()。我已经测试过并且可以正常工作。
Sleep.EnableWakeupByMultiPins(Sleep.WakeupGpioPin.Pin32,Sleep.WakeupMode.AnyHigh);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。