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

 
 
> Как понять, где виснет STM32F103?
zheka
сообщение Feb 24 2014, 15:46
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Господа, работаю с STM32F103 и KEIL в режиме отладки.
Очень много вложенных циклов, ветвлений. Делаю менюшки и окошки. Глюков не избежать, иногда выйти из какого-то окошка не получалось - из за ошибок программа крутится в цикле, не получая команды выхода из него. Искал такие ошибки просто- шерстил вложенные циклы брейкпоинтами и находил тот цикл, в котором программа крутится.
А недавно программа стала зависать в одном и том же месте, но нерегулярно, в зависимости от положения звезд и фазы луны. Ни один цикл брейкпоинтом не ловится, ощущение, что программу кинуло куда-то не туда и контроллер просто встал.

Как KEILом вычислить этот участок кода?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
A. Fig Lee
сообщение Feb 25 2014, 00:53
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Во первых, брейкпойнт на хардфолт хэндлер.
Во вторых, заведите пару переменных и периодически
их инициализировать:
Код
const char *func;
uint16_t line;

void f1 ()
{
  func = __func__;
line = __LINE__;
...
line = __LINE__;
...
line = __LINE__;
}

void f2()
{
  func = __func__;
...
}

и проверять, какую последнюю функцию программа посетила.
Ну и линию..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 23:41
Рейтинг@Mail.ru


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