使用定时器,每隔0.1秒进中断,去判断是否符合你的条件,如果符合条件,就亮,否则灭。
具体逻辑参考以下代码
在一个if里面,两个条件一起判断,执行的内容也混一块。
cpp
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM4)
{
if(show_mode==0&& percentage_change_flag==1)//数据界面+锁定
{
led_show(1,3);//1亮,3亮
}
else if(show_mode==0&& percentage_change_flag==0)//数据界面+可变
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << 1, GPIO_PIN_RESET);//1亮,3不管它
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
else if(show_mode!=0&& percentage_change_flag==1)//其他界面+锁定
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << 3, GPIO_PIN_RESET);//3亮,1不管它
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
else
{
led_off();//都灭
}
}