我使用vscode+platformIO+arduino开发DfRobot的esp32-c3的这块开发板
我选用1号io作为唤醒源,设置高电平唤醒esp_deep_sleep_enable_gpio_wakeup(1, ESP_GPIO_WAKEUP_GPIO_HIGH),使用esp_deep_sleep_start()进入深度睡眠后,用万用表测得1号引脚为低电平,但连线接3v3后无反应,gpio 1始终置低。
于是我设置低电平唤醒,esp_deep_sleep_enable_gpio_wakeup(1, ESP_GPIO_WAKEUP_GPIO_LOW),睡眠后可以唤醒,但由于gpio 0始终置低,所以进入睡眠后会立即唤醒导致芯片一直处于唤醒状态。我还尝试了0,2,3号io都是如此。
请问有人知道这是什么原因吗?有没有什么建议?在github上也找到有人问同样的问题,但暂时没有解决方案。
具体什么情况说一下
问题解决了,还得是Github,实际情况和官网文档有所出入,官网说不需要配置睡眠后的gpio,但实际还是需要给使用的IO定向的,对于esp32-C3,要实现GPIO唤醒深度睡眠,需要使用以下语句,以GPIO1为例:
//定义用于RTC_GPIO唤醒的IO,0b为二进制,“0010”为2^(gpio 1)的二进制数
//gpio0~3 为0b1111,即2^0+2^1+2^2+2^3=15的二进制数
const uint64_t WAKEUP_PIN_BITMASK = 0b0010;
//配置唤醒源
gpio_deep_sleep_hold_dis();
esp_deep_sleep_enable_gpio_wakeup(WAKEUP_PIN_BITMASK, ESP_GPIO_WAKEUP_GPIO_HIGH);
gpio_set_direction(GPIO_NUM_1, GPIO_MODE_INPUT);
//开始睡眠
esp_deep_sleep_start();