Top.Mail.Ru
Уведомления
Очистить все

[Решено] Оптимизация кода

rocky
(@rocky)
New Member

Сама суть программы, чтобы при включение переключателей загорался определённый светодиод. Не могу понять, как можно оптимизировать, помогите пожалуйста

Это только часть кода, если надо, то могу предоставить полный. Но оптимизировать надо только эту часть

 

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    
        }
    }
}

Цитата
Topic starter Размещено : 20.01.2022 22:52
Aveal
(@aveal)
Illustrious Member Admin

Как вариант:

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
Поделиться: