Clock configuration

Настройка "внутренних часов" контроллера

Разберем, что происходит на вкладке "Clock Configuration".

1. Источник тактирования

В первую очередь, нам необходимо выбрать начальный источник постоянной частоты, на основе которого мы можем настроить все остальные частоты. Внутри контроллеров STM32 есть свой внутренний резонатор (HSI), однако он подвержен дрифту в процессе работы, поэтому мы будем использовать внешний резонатор с частотой 8MHz. Для этого, выберем HSE в PLL Source Mux, и в Input frequency установим 8. Input frequency задается характеристиками внешнего резонатора и всегда фиксирован.

Настройка внешнего резонатора (HSE)

На каждом модуле VBCore есть внешний резонатор 8 MHz. Чтобы использовать его, надо в System Core -> RCC выбрать High Speed Clock -> Crystal/Ceramic Resonator. Все остальное CubeIDE сделает за вас.

2. Настройка PLLCLK

Этот блок отвечает за "динамическое" задание частоты, которое может отличаться от частоты входящей. Для этого мы можем выбрать необходимые множители и делители (в нашем случае X80, /2).

3. Выбор источника "system clock"

Тут мы можем выбрать, какую частоту будем использовать для переферии и системной частоты (HCLK). Практически всегда это будет PLLCLK.

Стоит отметить, что в несложных проектах настройку большей части параметров можно вообще пропустить. Достаточно настроить внешнее тактирование, вписать желаемое значение в HCLK и нажать Enter - CubeIDE попробует подобрать все параметры сама.

4. Частота переферии

Далее, мы можем выбрать нужные значения делителей (Prescaler) и множителей (X 1, в нашем случае) для получения необходимой частоты переферии. Переферия делится на две шины (APB1, APB2). Какие таймеры и модули (ADC и пр.) относятся к какой шине можно найти в datasheet на контроллер. Частота, полученная здесь, передается дальше в каждый модуль/таймер, после чего работает уже и его Prescaler (например, prescalser таймера мы настраивали в прошлом примере).

Last updated