Страница 1 из 1

STM32F4 и PLL

Добавлено: Пн июл 21, 2014 17:51:32
Arlleex
Добрый вечер. STM32F407, как и все остальные STM32, стартует на внутреннем генераторе HSI.
Каким образом переключаться на HSE или включить PLL? Это из main делать, или это делают startup файлы?
Когда мы создаем проект (среда Keil), в разделе Target вкладки Flash/Configure Flash Tools есть поле Xtal (MHz). На что влияет это поле?
В файле stm32f4xx.h тоже есть #define HSE_VALUE и HSI_VALUE. А эти на что влияют?
Т.е. фактически есть 2 различных определения - в самой среде и в конфигурационных файлах. Какие именно за что отвечают?
И опять же, сейчас контроллер работает на частоте 8 МГц (плата STM32F4-Discovery), т.к. на плате установлен кристалл на эту частоту (и в файле stm32f4xx.h я подправил HSE_VALUE на 8000000). По умолчанию STM32F4 стартует на внутреннем HSI частотой 16 МГц. Однако судя по всему startup файлы настраивают микроконтроллер на синхронизацию от HSI и он начинает работать действительно на 8 МГц. Дальше куда двигаться, чтобы настроить PLL на 168 МГц?

P.S. От этих startup-ов, конфигурационных файлов и настроек, библиотек уже можно сойти с ума, т.к. на самом деле иногда уже не понятно, как именно поведет себя микроконтроллер, на какую частоту реально настроится и т.д.
Благодарю за внимание!

Re: STM32F4 и PLL

Добавлено: Пн июл 21, 2014 18:26:02
oleg110592
в startup есть вызов функции SystemInit, которая находится в файле system_stm32f4xx.c:

Код: Выделить всё

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0

Эта функция для настройки тактирования и PLL.
ST раздавала эксель файл, который генерит system_stm32f4xx.c для любой частоты автоматически по указанным вами параметрам. Сейчас эту функцию выполняет STM32Cube initialization code generator.
Все логично и удобно - сходить с ума не надо.

Re: STM32F4 и PLL

Добавлено: Пн июл 21, 2014 18:55:33
Arlleex
Ага, теперь все встало на свои места. Спасибо! :)