Баг я убрал. Объясню.что то я не уверен что ты баг со стартером убрал . ты в модуле стартер оставил инверсию - что не нужно , а в модуле иоконфиг , ты поставил и 3т и 3 инверсию еще раз ) а нужно только 3т инверсию оставить )
посмотри у меня - проверил работает )
Из логики следует что инверсия самой иинверсии дает исходное значение

Ненужное на первый взгляд инвертирование, на самом деле имеет причину. Так как при переназначении выходов поведение у всех из них должно быть одинаковое (например 1 - включить, 0 - выключить), то кое где пришлось поставить инверсию. Например транзисторы выходов зажигания идут прямо к портам микроконтроллера. Тут инверсия не нужна. Выдается 1 и транзистор открывается (включается). В случае с выходом блокировки стартера нужна инверсия, так как затвор выходного транзистора идет не сразу к порту микроконтроллера, а через инвертирующий транзистор (см. схему). Поэтому чтобы включить выходной транзистор блокировки стартера, нужно выдать 0 на на линию порта микроконтроллера.
Ну а если ты посмотришь на функцию starter_set_blocking_state() то она блокирует стартер когда ее параметр равер 1, а IOCFG_SET() заблокирует стартер только если получит на вход 0, вот и снова инверсия.