Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему-то зависает STM32F103
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Vladimir_T
Здравствуйте, уважаемые коллеги, подскажите в чем тут дело? Для тестирования палаты на STM32F103 беру готовый проект Blinky из Кейл 5.4, процессор выбран, настройки правильные, компилирую, заливаю в процессор JLink-ом 7. Пробую отладку, но процессор зависает не доходя до main(). Отладка идет в Start_Up - файле, затем System_Init, инициализация тактирования (внутренний генератор - 24Мгц), затем устанавливается бит размещения таблицы веторов во флэше и после этого - процессор улетает в фатальное прерывание по сбою HardFault, по-моему. Может кто-ибудь знает, подскажите, пожалуйста.
nx6310
Может камень не тот выбран в настройках проекта
andries5
Цитата(Vladimir_T @ Jan 29 2014, 19:52) *
инициализация тактирования (внутренний генератор - 24Мгц)

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

Именно так!
ViKo
Если сделаете обработчик 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 .
}
Vladimir_T
В этом проэкте макроопределениями по умолчанию устанавливался источник тактирования HSE, тогда как кварц на моей плате отсутствует. Я был уверен, что если не завелся кварцевый генератор, то вызывается прерывание по сбою генератора, и процессор переходит назад на HSI. После правильной установки макроопределений стало работать нормально.
vlad_new
Цитата(Vladimir_T @ Jan 30 2014, 19:33) *
Я был уверен, что если не завелся кварцевый генератор, то вызывается прерывание по сбою генератора, и процессор переходит назад на HSI.

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

Вообще-то, SystemInit не должна была переключиться на HSE, если он не запустился. Обработчик прерывания CSS (NMI) - пустой, если сами его не написали. Ничего не переключит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.