0
Премиленько получилось… и елочка такая, всамделишная :) а у меня вот пространственное мышление отсутствует напрочь, попытка представить что-то сложнее кубика вызывает лютый диссонанс…

где текстолит такой недорогой брал?)
0
0
ее не вынести как инлайновою в хедер, компилятор не сможет ее заинлайнить.
Ну может оно и к лучшему :)
0
функцию следовало сделать инлайновой
хорошая идея… кстати, вроде gcc имеет свойство при оптимизации все простые функции превращать в инлайновые автоматом.
0
переменная должна сохранять свое значение между вызовами
да, точно, ступил.
+1
Ну так-то, для себя неплохо, а вот перед выкладыванием (особенно в коллективный блог) следовало бы причесать.

С ходу не понравилось следующее:

— Что делает функция crpxSetLeds()? Нет, понятно, «устанавливает состояния светодиодов». Но нафига она нужна, если переменная crpxLedsA — глобальная? Это же не stm32, надо экономить :) Так что установку состояния можно было бы просто выполнять, присвоив переменной crpxLedsA нужное значение — напрямую, а не через функцию

— Что делает переменная crpxSt? Нигде не инициализируется, нигде не используется, да еще жрет оперативку (ну потому что глобальная). Ах да, точно — используется в switch. Только никто не дает гарантии, что начальное значение crpxSt=0. А если там мусор?

Как в том анекдоте: Буратино дали три яблока. Два он съел. Сколько яблок осталось у Буратино? Думаете одно? Ничего подобного. Никто не знает сколько у него уже было яблок до этого. Мораль — всегда обнуляйте переменные!

Да и в принципе можно сделать crpxSt локальной — целый байт в оперативке сэкономим :)