Когда вы говорите «сброс», я думаю, что вы попадаете в вектор сброса, а не в одно из прерываний или обработчиков. Вы говорите, что он действительно сбрасывает чип и запускает ваше программное обеспечение заново, или вы говорите, что он где-то зависает? или у вас все таблицы векторов указывают на вектор сброса?
Как действовать дальше, зависит от того, что вы действительно видите, вам нужно быть более ясным или конкретным, или, возможно, вам нужна помощь в выяснении этого.
Обычно я отображаю неиспользуемые векторы в простую строку кода, которая разветвляется на себя. Позже я могу переназначить некоторые из них в реальный код.
cortex-m очень хорош тем, что вы можете указать на C-код. Если вы думаете, что получаете исключение, пусть оно указывает на подпрограмму, которая захватывает что-то, что помогает вам выяснить, в каком режиме вы находитесь, регистр ссылок может содержать эту информацию или где-то в csr, распечатываете это и идете в бесконечный цикл , Заполните неиспользуемые части таблицы векторов адресом этой универсальной функции отладки.
Оттуда вам нужно выяснить, почему вы включаете это исключение, это может быть что-то вроде неприсоединенного доступа, например. Возможно, вы сгенерировали прерывание при попытке инициализировать устройство, прежде чем полностью настроить обработчик, который знает.
измените свой вопрос, добавив больше ответов или информации, пока вы работаете с этим.