реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32L476 HardFaul при включении со шнуром USB, Если шнур включать после подачи питания, нормально.
Димон Безпарольн...
сообщение May 31 2017, 14:54
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Поотключал всю активность CDC UART - не помогло. Вываливается в HardFault если подавать питание после подключения шнура USB к изделию.

К сожалению мало знаком с дебуггером - ловлю уже в HardFault. Хотел спросить - можно как - то отследить откуда он туда падает?
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 31 2017, 15:32
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Димон Безпарольный @ May 31 2017, 17:54) *
Поотключал всю активность CDC UART - не помогло. Вываливается в HardFault если подавать питание после подключения шнура USB к изделию.

К сожалению мало знаком с дебуггером - ловлю уже в HardFault. Хотел спросить - можно как - то отследить откуда он туда падает?

Самый простой вариант объявить HardFault обработчик вот так:
Код
void HardFault(void)
{
  volatile int i=1;
  while(i);
}

Когда вывалитесь в hardfault установите i=0 и прошагайте до выхода из обработчика - с довольно большой вероятностью возврат произойдет в место возникновения проблемы (ну или около него). Посмотрите состояние регистров и дизассемблером, что там делалось. Если Вам не повезло и HF произошел где-то в другом месте, то смотрите состояние регистра BFSR, BFAR и т.д.

Сообщение отредактировал Шаманъ - May 31 2017, 15:42
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение May 31 2017, 15:36
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(Шаманъ @ May 31 2017, 18:32) *
Самый простой вариант объявить HardFault обработчик вот так:

Он так и объявлен. Там мертвый цикл. Но от куда он туда попадает - не могу понять.

Сообщение отредактировал Димон Безпарольный - May 31 2017, 15:36
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 31 2017, 15:43
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Димон Безпарольный @ May 31 2017, 18:36) *
Он так и объявлен.

Это я случайно отправил недописанное сообщение laughing.gif , прочитайте его еще раз, я отредактировал...
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение May 31 2017, 15:49
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(Шаманъ @ May 31 2017, 18:43) *
Это я случайно отправил недописанное сообщение laughing.gif , прочитайте его еще раз, я отредактировал...

Блин. Точно. Весьма простое решение. Спасибо.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 31 2017, 16:09
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Добавлю: шагать нужно по ассемблерным командам. Если шагать по исходному коду, то весьма вероятно что отладчик побежит дальше или сразу после выхода свалится в исключение снова.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 14:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01312 секунд с 7
ELECTRONIX ©2004-2016