Не прошивается через SWD STM32, если используется PLL

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
KIVi
Встал на лапы
Сообщения: 126
Зарегистрирован: Вс янв 27, 2013 19:02:19

Не прошивается через SWD STM32, если используется PLL

Сообщение KIVi »

Настраиваю PLL вручную на STM32F103 и получаю следующую проблему - микроконтроллер перестаёт прошиваться через программатор по SWD. Можно прошить только если зажать RESET, запустить прошивку с компьютера, быстро отпустить RESET. Либо загрузить МК в bootloader с помощью пина BOOT0. В таком случае можно хоть залить прошивку через SWD, хоть через UART. В любом случае суть действий в том, чтобы не дать моему коду инициализировать PLL после сброса. При этом SWD в принципе работает - полностью работает отладка (если не пытаться перезаписать прошивку отладчиком), да и при заливке прошивки всё видится, просто утилита прошивки висит на этапе загрузки кода, пока её не прибьёшь.

Если же кодить с помощью готовых библиотек типа libopencm3 или ChibiOS, то всё отлично шьётся даже если использовать PLL. Значит это таки мой косяк, а не аппаратуры или утилиты прошивки.

Вот весь мой код работы с частотами: http://pastebin.com/kLQS9Umw

Если вызвать stm32_rccUseHSE, то можно переключиться на внешний кварц и всё будет нормально работать. Однако если вызвать stm32_rccUsePLLFromHSE, чтобы запустить PLL, то МК тоже нормально работать, но перестанет прошиваться.

Как такое может быть? Быть может, я что-то криво настраиваю?
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Не прошивается через SWD STM32, если используется PLL

Сообщение dosikus »

В дебагере по шагам найти где в хард фаулт улетает.
Реклама
Ответить

Вернуться в «ARM»