nucleo stmcubemx 按键中断测试

实现功能:(1)LD2闪烁 ;(2)按键变换闪烁频率,闪烁频率分别为5HZ,1HZ;对应延时分别为100ms,500ms。

步骤:

1.  将PC13配置为外部中断功能

2.  配置GPIO具体参数,下降沿触发(按键按下时),不使用触发功能nucleo stmcubemx 按键中断测试_第1张图片

3. 开启外部中断功能

nucleo stmcubemx 按键中断测试_第2张图片

4.生成工程文件

nucleo stmcubemx 按键中断测试_第3张图片

5. 完善代码

(1)全局变量声明

(2)LED 闪烁

/* USER CODE END WHILE */


  /* USER CODE BEGIN 3 */
  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(nDelay);  //ms级延时

  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_Delay(nDelay);
  }
  /* USER CODE END 3 */

(3)按键中断函数

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(nDelay == 500)
nDelay=100;
else
nDelay=500;
}

/* USER CODE END 4 */


说明:

按键中断函数查找路径位于:stm32f0xx_it.c ------void EXTI4_15_IRQHandler(void)-----HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13)-----

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 
  { 
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}

注意__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  /* NOTE: This function should not be modified, when the callback is needed,
            the HAL_GPIO_EXTI_Callback could be implemented in the user file
   */ 
}

你可能感兴趣的:(STM32)