Сама суть программы, чтобы при включение переключателей загорался определённый светодиод. Не могу понять, как можно оптимизировать, помогите пожалуйста
Это только часть кода, если надо, то могу предоставить полный. Но оптимизировать надо только эту часть
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 } } }
Как вариант:
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 } } }