Уведомления
Очистить все
Сама суть программы, чтобы при включение переключателей загорался определённый светодиод. Не могу понять, как можно оптимизировать, помогите пожалуйста
Это только часть кода, если надо, то могу предоставить полный. Но оптимизировать надо только эту часть
int main(void) { gpio(); //Передача данных портов GPIO while(1) //Бесконечный цикл { if (((GPIOB->IDR & (1 << 13)) == 1 ) && ((GPIOB->IDR & (1 << 12)) == 0 )) //Если SW3=1 и SW4=0, то: { GPIOB->BSRR = GPIO_BSRR_BR_5; //L5=0 GPIOB->BSRR = GPIO_BSRR_BR_7; //L7=0 } if (((GPIOB->IDR & (1 << 13)) == 0 ) && ((GPIOB->IDR & (1 << 12)) == 1 )) //Если SW3=0 и SW4=1, то: { GPIOB->BSRR = GPIO_BSRR_BS_5; //L5=1 GPIOB->BSRR = GPIO_BSRR_BR_7; //L7=0 } if (((GPIOB->IDR & (1 << 13)) == 1 ) && ((GPIOB->IDR & (1 << 12)) == 1 )) //Если SW3=SW4, то: { GPIOB->BSRR = GPIO_BSRR_BR_5; //L5=0 GPIOB->BSRR = GPIO_BSRR_BS_7; //L7=1 } if (((GPIOB->IDR & (1 << 13)) == 0 ) && ((GPIOB->IDR & (1 << 12)) == 0 )) //Если SW3=SW4, то: { GPIOB->BSRR = GPIO_BSRR_BR_5; //L5=0 GPIOB->BSRR = GPIO_BSRR_BS_7; //L7=1 } } }
Создатель темы Размещено : 20.01.2022 22:52
Как вариант:
int main(void)
{
gpio(); //Передача данных портов GPIO
while(1) //Бесконечный цикл
{
if (((GPIOB->IDR & (1 << 13)) == 1) && ((GPIOB->IDR & (1 << 12)) == 0)) //Если SW3=1 и SW4=0, то:
{
GPIOB->BSRR = GPIO_BSRR_BR_5 | GPIO_BSRR_BR_7; // L5=0 L7=0
}
if (((GPIOB->IDR & (1 << 13)) == 0) && ((GPIOB->IDR & (1 << 12)) == 1)) //Если SW3=0 и SW4=1, то:
{
GPIOB->BSRR = GPIO_BSRR_BS_5 | GPIO_BSRR_BR_7; // L5=1 L7=0
}
if ((GPIOB->IDR & (1 << 13)) == (GPIOB->IDR & (1 << 12))) //Если SW3=SW4, то:
{
GPIOB->BSRR = GPIO_BSRR_BR_5 | GPIO_BSRR_BS_7; // L5=0 L7=1
}
}
}
Размещено : 21.01.2022 11:02