这是我第一次编写mikrokontroler程序,我使用uVison并使用stm32进行编程。
我的引脚上有两个LED灯: PIN_4和PIN_5,还有一个教程,我知道如何眨眼(下面的代码),但我不知道如何让它们闪烁而不是同样的延迟。就像我想让PIN_4延迟100 of,PIN:5引导,延迟50 of。下面的代码是一个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 */
}发布于 2017-12-09 23:22:42
你有两个选择。
首先,您可以设置一个计时器来计数毫秒。您可以从STMCubeMX为50 for定时器生成代码。然后,在计时器回调函数中,您应该将引脚设置为高或低。
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 */
}https://stackoverflow.com/questions/47730477
复制相似问题