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

 
 
 
Reply to this topicStart new topic
> Почему-то зависает STM32F103
Vladimir_T
сообщение Jan 29 2014, 16:52
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Здравствуйте, уважаемые коллеги, подскажите в чем тут дело? Для тестирования палаты на STM32F103 беру готовый проект Blinky из Кейл 5.4, процессор выбран, настройки правильные, компилирую, заливаю в процессор JLink-ом 7. Пробую отладку, но процессор зависает не доходя до main(). Отладка идет в Start_Up - файле, затем System_Init, инициализация тактирования (внутренний генератор - 24Мгц), затем устанавливается бит размещения таблицы веторов во флэше и после этого - процессор улетает в фатальное прерывание по сбою HardFault, по-моему. Может кто-ибудь знает, подскажите, пожалуйста.
Go to the top of the page
 
+Quote Post
nx6310
сообщение Jan 29 2014, 16:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



Может камень не тот выбран в настройках проекта
Go to the top of the page
 
+Quote Post
andries5
сообщение Jan 29 2014, 17:18
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421



Цитата(Vladimir_T @ Jan 29 2014, 19:52) *
инициализация тактирования (внутренний генератор - 24Мгц)

Это частота SYSCLK? Внутренний генератор 8Мгц. 24Мгц после PLL.
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Jan 30 2014, 00:04
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Цитата(andries5 @ Jan 29 2014, 20:18) *
Это частота SYSCLK? Внутренний генератор 8Мгц. 24Мгц после PLL.

Именно так!
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 30 2014, 06:19
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если сделаете обработчик HardFault следующего вида, то в регистре R0 в отладчике получите адрес команды, на которой улетели в HardFault. А конкретную причину можно узнать, изучая Fault регистры, в книжке Ю можно найти описание.
Код
__asm void HardFault_Handler(void) {
  TST LR, #4
  ITE EQ
  MRSEQ R0, MSP        ; Main Stack was used, put MSP in R0
  MRSNE R0, PSP        ; Process Stack was used, put PSP in R0
  LDR R0, [R0, #24]    ; Get stacked PC from stack
  B .
}
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Jan 30 2014, 15:33
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



В этом проэкте макроопределениями по умолчанию устанавливался источник тактирования HSE, тогда как кварц на моей плате отсутствует. Я был уверен, что если не завелся кварцевый генератор, то вызывается прерывание по сбою генератора, и процессор переходит назад на HSI. После правильной установки макроопределений стало работать нормально.
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Jan 30 2014, 21:06
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Цитата(Vladimir_T @ Jan 30 2014, 19:33) *
Я был уверен, что если не завелся кварцевый генератор, то вызывается прерывание по сбою генератора, и процессор переходит назад на HSI.

Так и есть. Остальное проблемма софта. Если где то стоит бесконечное ожидание готовности HSE, то там и будем всегда висеть. А если анализа отката на HSI нет, то вообще любая хрень может получится.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 31 2014, 09:15
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Vladimir_T @ Jan 30 2014, 18:33) *
В этом проекте макроопределениями по умолчанию устанавливался источник тактирования HSE, тогда как кварц на моей плате отсутствует. Я был уверен, что если не завелся кварцевый генератор, то вызывается прерывание по сбою генератора, и процессор переходит назад на HSI. После правильной установки макроопределений стало работать нормально.

Вообще-то, SystemInit не должна была переключиться на HSE, если он не запустился. Обработчик прерывания CSS (NMI) - пустой, если сами его не написали. Ничего не переключит.
Go to the top of the page
 
+Quote Post

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

 


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


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