开发板上有一个用户按键:
按键相关定义:
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] Key push-button
- */
- #define BUTTON_USER_PIN GPIO_PIN_13
- #define BUTTON_USER_GPIO_PORT GPIOC
- #define BUTTON_USER_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
- #define BUTTON_USER_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
- #define BUTTON_USER_EXTI_IRQn EXTI13_IRQn
- #define BUTTON_USER_EXTI_LINE EXTI_LINE_13
接下来使能外部中断:
- BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
注册相关的中断信息:
- /* Configure Button pin as input with External interrupt */
- gpio_init_structure.Mode = GPIO_MODE_IT_RISING;
- HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);
- (void)HAL_EXTI_GetHandle(&hpb_exti[Button], BUTTON_EXTI_LINE[Button]);
- (void)HAL_EXTI_RegisterCallback(&hpb_exti[Button], HAL_EXTI_COMMON_CB_ID, ButtonCallback[Button]);
- /* Enable and set Button EXTI Interrupt to the lowest priority */
- HAL_NVIC_SetPriority((BUTTON_IRQn[Button]), BSP_BUTTON_PRIO[Button], 0x00);
- HAL_NVIC_EnableIRQ((BUTTON_IRQn[Button]));
在按键按下后,会产生中断请求,进而在回调函数中可以进行预定义的操作。
|