CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

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下。

代码理解

示例工程流程图如图 8图 9所示:

图 8 AON_GPIO Wakeup示例工程流程图(睡眠)
图 9 AON_GPIO Wakeup示例工程流程图(WFI/WFE)
  1. 为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。

  2. 清除并使能AON_GPIO中断。代码如下所示:
    hal_nvic_clear_pending_irq(EXT2_IRQn);
    hal_nvic_enable_irq(EXT2_IRQn);
    
  3. 系统进入睡眠。代码如下所示:
    while (!g_exit_flag)
    {
        printf("\r\nEnter sleep.\r\n");
        SCB->SCR |= 0x04;
        __WFI();
        printf("Wakeup from sleep.\r\n");
    }
    
  4. OK键唤醒系统并结束程序。

测试验证

  1. 用GProgrammer下载aon_gpio_wakeup.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中将会显示通过IO口唤醒系统以及设备睡眠的调试信息。

扫描关注

打开微信,使用“扫一扫”即可关注。