您好,如题,我现在设置了ARCH_EXT_SLEEP_ON,MCU启动后调用函数: void app_button_enable(void) { app_easy_wakeup_set(app_wakeup_cb); wkupct_register_callback(wake_task_cb); wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_HUOER_PORT, GPIO_HUOER_PIN), WKUPCT_PIN_POLARITY(GPIO_HUOER_PORT, GPIO_HUOER_PIN, WKUPCT_PIN_POLARITY_LOW), // polarity low 1, // 1 event 40); // debouncing time = 40 }
休眠时调用: void set_sleep(void) { arch_ble_ext_wakeup_on(); arch_set_sleep_mode(ARCH_EXT_SLEEP_ON); }
已确认app_button_enable()在启动后被调用到,并且初始化时,IO口也有设置输入上拉: GPIO_ConfigurePin(GPIO_HUOER_PORT, GPIO_HUOER_PIN, INPUT_PULLUP, PID_GPIO, false); 并且也有测试要去唤醒MCU时是否有低电平信号(已确认有) 但始终无法唤醒MCU,请指导,谢谢!!
建议参考一下sleepmode参考工程来设置GPIO唤醒。具体可以看一下user_sleepmode.c 源文件中 user_app_adv_undirect_complete() 函数里的内容。另外GPIO的配置也可以参考periph_init的配置对比一下