Главная

Главная

Сообщество

Сообщество

Форум

Форум

STM32

STM32

Электроника

Электроника

Raspberry Pi

Raspberry Pi

Уведомления
Очистить всё

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

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


Цитата
Автор темы Опубликовано : 20.01.2022 22:52
Aveal MT
(@aveal)
Top level 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
Обзор конфиденциальности

На этом сайте используются файлы cookie, что позволяет нам обеспечить наилучшее качество обслуживания пользователей. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас при возвращении на наш сайт и помощь нашей команде в понимании того, какие разделы сайта вы считаете наиболее интересными и полезными.