Настраиваю PLL вручную на STM32F103 и получаю следующую проблему - микроконтроллер перестаёт прошиваться через программатор по SWD. Можно прошить только если зажать RESET, запустить прошивку с компьютера, быстро отпустить RESET. Либо загрузить МК в bootloader с помощью пина BOOT0. В таком случае можно хоть залить прошивку через SWD, хоть через UART. В любом случае суть действий в том, чтобы не дать моему коду инициализировать PLL после сброса. При этом SWD в принципе работает - полностью работает отладка (если не пытаться перезаписать прошивку отладчиком), да и при заливке прошивки всё видится, просто утилита прошивки висит на этапе загрузки кода, пока её не прибьёшь.
Если же кодить с помощью готовых библиотек типа libopencm3 или ChibiOS, то всё отлично шьётся даже если использовать PLL. Значит это таки мой косяк, а не аппаратуры или утилиты прошивки.
Вот весь мой код работы с частотами: http://pastebin.com/kLQS9Umw
Если вызвать stm32_rccUseHSE, то можно переключиться на внешний кварц и всё будет нормально работать. Однако если вызвать stm32_rccUsePLLFromHSE, чтобы запустить PLL, то МК тоже нормально работать, но перестанет прошиваться.
Как такое может быть? Быть может, я что-то криво настраиваю?
Не прошивается через SWD STM32, если используется PLL
- Реклама
Re: Не прошивается через SWD STM32, если используется PLL
В дебагере по шагам найти где в хард фаулт улетает.
