По поводу чУдного поведения ST-Link могу сказать из своего опыта: Кирдык выходам приходит когда питаешь свой подключенный к ST-Link девайс от него-же, или от компа (+5, +12В). Я так часто делал раньше, и у меня часто выгорали ноги.
Но!!! Много раз так было, и ноги всегда горели у STM32. Эффект усугублялся, если у девайса на питании имеются здоровые электролиты.
Теперь описываю механизм:
Нога SWCLK программатора настроена на выход (лог.0). При подключении девайса с электролитом на питании идет бросок тока при зарядке электролита. Соответственно - на проводе GND, соединяющим программатор и девайс выпадает положительный потенциал (относительно программатора), в результате на входе SWCLK STM32 открывается защитный диод (между GND и SWCLK). При частых коммутациях он в конце концов выгорает.
Причем наступает момент, когда подгоревший SWCLK провоцирует странное поведение, совсем как у тебя описано.
В конце концов все перестает работать. К этому моменту, если прозвонить SWCLK STM32 на землю, то будет закоротка сопротивлением ок. 50 Ом.
Так что, если у тебя такой случай - проверь. Прозвони SWCLK STM32 на землю (+ мультиметра на SWCLK). Если там будут звониться сотни Ом, то это ОНО!!!
Могу так-же добавить, что эта проблема решается использованием развязанного ИП.