AON_GPIO Wakeup
AON_GPIO Wakeup示例实现了AON_GPIO的中断检测功能。
当AON_GPIO配置为外部输入中断模式并使能中断时,通过IO上电平的变化(上升/下降沿,高/低电平)触发中断处理程序;AON_GPIO也可以配置为唤醒源,用于唤醒睡眠的系统。
AON_GPIO Wakeup示例的源代码和工程文件位于SDK_Folder\projects\peripheral\aon_gpio\aon_gpio_wakeup,其中工程文件在文件夹Keil_5下。
代码理解
- 为AON_GPIO模块配置外部中断。
aon_gpio_init_t aon_gpio_init = AON_GPIO_DEFAULT_CONFIG; aon_gpio_init.pin = KEY_OK_PIN; aon_gpio_init.mode = KEY_ANO_TRIGGER_MODE; aon_gpio_config.pull = AON_GPIO_PULLUP; hal_aon_gpio_init(&aon_gpio_init);AON_GPIO配置参数细节请参考AON_GPIO Input & Output。此示例中pin选择KEY_OK_PIN即AON_GPIO_PIN_1。
- 清除并使能AON_GPIO中断。代码如下所示:
hal_nvic_clear_pending_irq(EXT2_IRQn); hal_nvic_enable_irq(EXT2_IRQn); - 系统进入睡眠。代码如下所示:
while (!g_exit_flag) { printf("\r\nEnter sleep.\r\n"); SCB->SCR |= 0x04; __WFI(); printf("Wakeup from sleep.\r\n"); } - 按OK键唤醒系统并结束程序。
测试验证
- 用GProgrammer下载aon_gpio_wakeup.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中将会显示通过IO口唤醒系统以及设备睡眠的调试信息。