|
|
  |
stm32f4discovery виснет раз в неделю |
|
|
|
Sep 24 2013, 19:13
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
о, спасибо, заработало а вы с xFSR не сталкивались?
пока поставил в обработчик исключения printf ("AFSR %u CFSR %u DFSR %u HFSR %u MMFAR %u BFAR %u\r\n",SCB->AFSR,SCB->CFSR,SCB->DFSR,SCB->HFSR,SCB->MMFAR,SCB->BFAR);
если кто уточнит как правильно надо сделать буду благодарен
Сообщение отредактировал сарматъ - Sep 24 2013, 20:09
|
|
|
|
|
Sep 24 2013, 21:36
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(сарматъ @ Sep 25 2013, 01:26)  да как раз оттуда эти регистры откопал Там, вроде, написано, мол, не утяжеляйте обработчик исключительной ситуации. А Вы printf... Со стеком очень аккуратно - сначала нужно убедиться, что указатель исправный. SVC нельзя использовать (или очень аккуратно). Скорее всего, блокировка по причине разрушенного стека - я бы не надеялся, что CPU выйдет из HardFault.
|
|
|
|
|
Sep 25 2013, 10:19
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
принтф - это вообще жесткая функция, она же с декодировкой параметров, и прочей байдой...
голый ассемблер вам конечно не нужен, его компилятор сам сделает, а вот вызов каких-то больших функций и прочее лучше избежать
надо понимать что найденная ошибка стека не означает что он перестал работать физически, то есть переменные будут создаваться, и в пределах одной функции они будут работать корректно. ( ну за исключением очень редкой ситуации когда указатель стека попал точно на вашу функцию, но при работе из флэш это невозможно)
для того чтобы отправить данные по УАРТу вам всего навсего надо положить их в DR регистр нужной периферии, ну так и сделайте это без принтф просто циклом ожидайте готовность регистра и пихайте данные. Пусть они идут бинарем а не текстом.
char *Pointer = (char *)&RegData; UART->DR = *Pointer++;
чтобы на компьютере удобно было читать используйте COMTerminal, это один файлик terminal.exe, самый удобный ком порт терминал что я встречал, показывает и текст и бинарь...
|
|
|
|
|
Sep 25 2013, 15:32
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(сарматъ @ Sep 25 2013, 17:33)  а лпц это кто? LPC микроконтроллеры ARM от NXP ( lpc). Golikov A., возможно, имел ввиду файл core_cmFunc.h из CMSIS от NXP.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|