ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1035121 Топик полностью
Aleksey_75 (09.09.2020 20:44, просмотров: 745) ответил SciFi на Всю жизнь "работаю с выводами" напрямую через регистры без каких-либо обёрток, неудобств почему-то не испытываю. Что в указанном примере должно вдохновить на более лучший порядок организации обработчиков прерываний?
это хорошо для AVR где адекватные порты, c STM32 сложнее там отдельно тянется номер пина и порта, поэтому оформил именно так! кстати в set_pin_active(LED1); 

set_pin_inactive(LED1);

get_pin_status(IN_1);


идет именно обращения к регистрам


зато инит всех пинов контроллера выглядит так

    for (uint8_t i = 0; pin_arr[i].pin != END_PIN_ARR; i ++)
    {
        RCC_APB2PeriphClockCmd (MCU_PORT_RCC(pin_arr[i].pin), ENABLE);
        
        if ((pin_arr[i].pin_mode == GPIO_Mode_AF_OD) || (pin_arr[i].pin_mode == GPIO_Mode_AF_PP))
        {
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        }
        
        pin_init(pin_arr[i], GPIO_Speed_2MHz);
        
        if (PIN_SET_OUT(pin_arr[i].pin_mode) != 0)          
        {
            set_pin_inactive(pin_arr[i]);
        }
    }