箐11 2024-01-29 13:02 采纳率: 40%
浏览 15
已结题

为什么想要通过外部中断来控制LED灯的亮灭情况不能实现 stm32g431 ?

为什么想要通过外部中断来控制LED灯的亮灭情况不能实现 stm32g431

cubemx配置

img

img

img

MX_GPIO_Init()中的中断优先级:

 /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI0_IRQn);

  HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI1_IRQn);

回调函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{

    if(GPIO_Pin==GPIO_PIN_0)
    {
    
        
        HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_15);
    }
    
}

void EXTI0_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI0_IRQn 0 */

  /* USER CODE END EXTI0_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
  /* USER CODE BEGIN EXTI0_IRQn 1 */

  /* USER CODE END EXTI0_IRQn 1 */
}

/**
  * @brief This function handles EXTI line1 interrupt.
  */
void EXTI1_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI1_IRQn 0 */

  /* USER CODE END EXTI1_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
  /* USER CODE BEGIN EXTI1_IRQn 1 */

  /* USER CODE END EXTI1_IRQn 1 */
}

  • 写回答

2条回答 默认 最新

  • qllaoda 2024-01-29 15:00
    关注

    1,先不用中断,验证LED是否可控制亮灭(不是翻转)
    2,为防止多次中断触发,初始化的时候关掉LED,在中断里只把LED状态改为亮,可验证是否确实触发。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月30日
  • 修改了问题 1月29日
  • 创建了问题 1月29日