Stm32 紫外线Led灯
这是我第一次编程mikrokontroler,我使用uVison并使用stm32进行编程 我有两个LED灯在它的引脚上:引脚4和引脚5与教程我知道如何使一眨眼(代码如下),但我不知道如何使他们机器人眨眼没有相同的延迟。就像我想让引脚4 led具有100毫秒的延迟,引脚5 led具有50毫秒的延迟。下面的代码是一个Led灯的代码Stm32 紫外线Led灯,stm32,keil,Stm32,Keil,这是我第一次编程mikrokontroler,我使用uVison并使用stm32进行编程 我有两个LED灯在它的引脚上:引脚4和引脚5与教程我知道如何使一眨眼(代码如下),但我不知道如何使他们机器人眨眼没有相同的延迟。就像我想让引脚4 led具有100毫秒的延迟,引脚5 led具有50毫秒的延迟。下面的代码是一个Led灯的代码 /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE EN
/* 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 */
}
你有两个选择
首先,您可以设置一个计时器来计算毫秒数。您可以从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;
}
}
第二种选择是主要的延迟
/* 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 */
}