Проблемы перехода с 16 битной платформы msp430 на 32 битную stm32 требуют аккуратного пересмотра разрядностей переменных в процедурах и полей в структурах
например в процедуре void IK1302_Tick(mtick_t signal_I, uint16_t J_signal_I)
объявлены локальные переменные uint16_t tmp, mi_lo, mi_hi;
которым затем производится присвоение
mi_lo = microinstruction;
mi_hi = (microinstruction >> 16);
Компилятор после вытаскивания значений из microinstruction в регистровые переменные mi_lo, mi_hi расширяет затем их нулем, а это лишнее
80008c2: b29c uxth r4, r3
80008c4: b292 uxth r2, r2
Нужно попробовать избежать этого лишнего кода при генерации, поправив их на тип
uint16_t tmp;
uint32_t mi_lo, mi_hi;
если все нормально попробовать изменить и tmp на 32 битную.
uint32_t tmp.