[STM32U5] 【NUCLEO-U5A5ZJ-Q测评】-3-按键中断

[复制链接]
845|2
 楼主| YangTwo 发表于 2023-11-11 14:50 | 显示全部楼层 |阅读模式
开发板上有一个用户按键:

7518654f1b26aa9c0.png

按键相关定义:

  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url] Key push-button
  3.   */
  4. #define BUTTON_USER_PIN                       GPIO_PIN_13
  5. #define BUTTON_USER_GPIO_PORT                 GPIOC
  6. #define BUTTON_USER_GPIO_CLK_ENABLE()         __HAL_RCC_GPIOC_CLK_ENABLE()
  7. #define BUTTON_USER_GPIO_CLK_DISABLE()        __HAL_RCC_GPIOC_CLK_DISABLE()
  8. #define BUTTON_USER_EXTI_IRQn                 EXTI13_IRQn
  9. #define BUTTON_USER_EXTI_LINE                 EXTI_LINE_13


接下来使能外部中断:
  1. BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);


注册相关的中断信息:

  1.     /* Configure Button pin as input with External interrupt */
  2.     gpio_init_structure.Mode = GPIO_MODE_IT_RISING;

  3.     HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);

  4.     (void)HAL_EXTI_GetHandle(&hpb_exti[Button], BUTTON_EXTI_LINE[Button]);
  5.     (void)HAL_EXTI_RegisterCallback(&hpb_exti[Button],  HAL_EXTI_COMMON_CB_ID, ButtonCallback[Button]);

  6.     /* Enable and set Button EXTI Interrupt to the lowest priority */
  7.     HAL_NVIC_SetPriority((BUTTON_IRQn[Button]), BSP_BUTTON_PRIO[Button], 0x00);
  8.     HAL_NVIC_EnableIRQ((BUTTON_IRQn[Button]));

在按键按下后,会产生中断请求,进而在回调函数中可以进行预定义的操作。



lajfda003 发表于 2023-12-11 18:51 | 显示全部楼层
多个按键用中断应该是没有问题的。
uiint 发表于 2023-12-12 15:02 | 显示全部楼层
能判断是双击还是单击吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

110

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部