uVision LED灯

uVision Led lights

这是我第一次为 mikrokontroler 编程,我正在使用 uVison 并有一个 stm32 可以编程。,

我在引脚上有两个 LED 灯:PIN_4 和 PIN_5 有一个教程我知道如何使一个闪烁(下面的代码)但我不知道如何使它们机器人眨眼的延迟不一样。就像我想让 PIN_4 延迟 100 毫秒,PIN:5 延迟 50 毫秒。下面的代码是一个Led灯的代码。

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); //Toggle the state of pin PC9
  HAL_Delay(100); //delay 100ms     

  }
  /* USER CODE END 3 */

}

你有2个选项。

首先,您可以设置一个计时器来计算毫秒数。您可以从 STMCubeMX 为 50ms 计时器生成代码。然后,在定时器回调函数中,您应该将引脚设置为高电平或低电平。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    timer_counter++; //50ms

    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);

    if(timer_counter>=2)  //100ms
    {
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
        timer_counter = 0;
    }
}

第二个选项是main中的延迟。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); //Toggle the state of pin PB5
      HAL_Delay(50); //delay 50ms     

      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); //Toggle the state of pin PB4
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); //Toggle the state of pin PB5
      HAL_Delay(50);  // delay 50ms
  }
  /* USER CODE END 3 */

}