Сразу говорю, я в Си и контроллерах особо не смыслю и Вас, как специалиста, не оцениваю. Все нижесказанное лишь мои предположения, ничего личного.
Возможно за мусор в коде и отсутствие именованных констант:
puTX.bytes[0]=(!IN_1<<0)+
(!IN_2<<1)+
(!IN_3<<2)+
(!IN_4<<3)+
(!IN_5<<4)+
(!IN_6<<5)+
(!IN_7<<6)+
(!IN_8<<7);
Сравните, например, с куском кода от STM из вашего же примера:
InitGPIO(GPIOB,GPIO_PIN_7,GPIO_MODE_INPUT); //1
InitGPIO(GPIOB,GPIO_PIN_6,GPIO_MODE_INPUT);
InitGPIO(GPIOB,GPIO_PIN_5,GPIO_MODE_INPUT);
InitGPIO(GPIOB,GPIO_PIN_4,GPIO_MODE_INPUT);
Ну или такое:
if (reset >= 2)
{
reset = 0;
timeout = MAX_TIMEOUT;
//PCKG_SwitchOffAllLeds(); // выключить все лампы
}
else
{
reset++;
}
это код джуниора, никак не тимлида, который должен код ревью делать за джунами...