допустим есть две переменные
uint8_t i; uint32_t counter;
тогда операции типа
i = (uint8_t) counter;
лучше писать в виде
i = *(uint8_t *) &counter;
Три лишних символа в коде убирает три лишних инструкции в бинарнике, причём, эти инструкции двухтактовые, то есть общая экономия - 6 тактов процессора!
А ещё с помощью этого приёма удобно получать доступ к отдельным байтам переменной:
buf[i] = *((uint8_t *)(&counter)+0); buf[j] = *((uint8_t *)(&counter)+1);