Seized
You inherited the drive firmware for a brushed DC motor with a fault interlock: a colleague wrote a tidy closed-loop speed controller that spins the shaft up to a commanded speed and, the instant the plant flags a fault, cuts the drive to a safe stop and refuses to run the control law until the fault is gone.
On the bench it was flawless. They would stall the shaft by hand, watch the drive shut off, let go, and the motor would spin right back up to speed. In the field it misbehaves in one specific way: the first time the shaft catches on something, the drive shuts off as designed, but it never comes back. The obstruction clears, the shaft is free to turn, and the motor just sits there dead until the board is power-cycled.
The commanded setpoint is delivered in an SRAM mailbox at 0x2000FF00. A load torque is applied to the plant independently, and it is not the same from run to run, so the duty that holds a given speed cannot be memorized. Speed is reported in milli-RPM (12,000,000 mRPM is 12,000 RPM). A correct drive spins up to the setpoint, survives a transient jam, and returns to speed once the shaft is free.
Find why the drive never recovers after it has faulted, and fix it so a temporary jam does not leave the motor permanently stopped.