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

GPIO Interrupt

GPIO Interrupt示例实现了GPIO的中断输入功能。GPIO配置为中断输入时,可以配置为上升/下降沿触发、高/低电平触发。

GPIO Interrupt示例的源代码和工程文件位于SDK_Folder\projects\peripheral\gpio\gpio_interrupt,其中工程文件在文件夹Keil_5下。

代码理解

示例工程流程图如图 11所示:

图 11 GPIO Interrupt示例工程流程图
  1. 配置GPIO模块中断输入。
    gpio_init_t gpio_config = GPIO_DEFAULT_CONFIG;
    gpio_config.mode = GPIO_MODE_IT_FALLING;
    gpio_config.pin  = GPIO_KEY0 | GPIO_KEY1;
    gpio_config.pull = GPIO_PULLUP;
    hal_gpio_init(GPIO_KEY_PORT, &gpio_config);
    
    /* Enable interrupt */
    hal_nvic_clear_pending_irq(GPIO_GET_IRQNUM(GPIO_KEY_PORT));
    hal_nvic_enable_irq(GPIO_GET_IRQNUM(GPIO_KEY_PORT));
    

    GPIO配置参数细节请参考GPIO Input & Output,其中mode选择GPIO_MODE_IT_FALLING,pin选择GPIO_KEY0、GPIO_KEY1即GPIO_PIN_12、GPIO_PIN_13。

  2. 调用hal_nvic_clear_pending_irq()和hal_nvic_enable_irq()清除并使能中断。代码如下所示:
    hal_nvic_clear_pending_irq(GPIO_GET_IRQNUM(GPIO_KEY_PORT));
    hal_nvic_enable_irq(GPIO_GET_IRQNUM(GPIO_KEY_PORT));
    
  3. 中断状态通过回调函数hal_gpio_exti_callback()返回,用户在此函数内可自定义操作。

测试验证

  1. 用GProgrammer下载gpio_interrupt.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中将会显示GPIO的中断输入结果。

扫描关注

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