QUOTE (ivainc1789 @ May 9 2016, 14:27)

Странно, но код переинициализации выводов расположен после точки останова main - то есть по сбросу должны быть активны дебажные свойства пинов.
Не знаю, как это организовано при работе с кортексами, но старые ARM7TDMI работать при активном сигнале сброса не могли и с ними работа происходила примерно так: Отпускается сброс, (процессор при этом начинает работать и успевает кое-что сделать), отладчик дает команду halt, останавливает ядро, расставляет точки останова (если стоит галочка - ставит точку останова на входе в main()) , ставит счетчик команд на первую команду и запускает выполнение (если стояла галочка "бежать до main()). Так вот, если процессор от отпускания сброса до halt успевал запретить JTAG или поломать тактирование - ситуация была в точности ваша. Производителями отладчиков рекомендовалось в отладочной версии программы в самое начало стартапа ставить задержку из пустого цикла, чтобы за время исполнения этой задержки отладчик успевал выполнить команду halt. Возможно, для кортексов у отладчиков в режиме без галочки "подключаться с зажатым Reset" алгоритм работы такой же. Для стирания такого кристалла можно перед сбросом зажать ногу BOOT0 - тогда кристалл запустится в режиме встроенного загрузчика, swd останется активным и сможет стереть кристалл.