Чтобы разрешить эту отладочную обработку ошибок, нужно добавить в проект макроопределение DEBUG. В среде разработки Keil IDE это делается через настройку свойств проекта, и установкой breakpoint в сессии отладки. Как это сделать, по шагам:
1. Установите уровень оптимизации Level 0 (-O0) на закладке C/C++, и добавьте DEBUG в строку определений препроцессора (Preprocessor Symbols -> Define:).
2. Установите breakpoint на строку, следующую за while(loop); (правый клик -> Insert breakpoint).
3. Запустите программу в отладчике на выполнение, и дождитесь момента возникновения ошибки.
4. Проанализируйте значения переменных, где находится код ошибки, номер строки и имя файла, где эта ошибка произошла.
Обратите внимание на предупреждение в документации про app_error_handler:
@warning Этот обработчик предоставлен только в качестве примера,
и он не должен быть перенесен в конечный продукт. Необходимо
тщательно проанализировать, как устройство должно реагировать
на подобные случаи ошибок в программе.
Комментарии
....всякое....
__BKPT(0);
NVIC_SystemRese t();
И таким образом если проект выполняется под отладкой (jlink, stlink, etc), то отладчик сработает на точке останова, а если без отладки - проект уйдет на перезагрузку. Это под GCC, думаю, что под Keil тоже можно такое провернуть.
RSS лента комментариев этой записи