Clock configuration
Настройка "внутренних часов" контроллера
Настройка "внутренних часов" контроллера
Разберем, что происходит на вкладке "Clock Configuration".
В первую очередь, нам необходимо выбрать начальный источник постоянной частоты, на основе которого мы можем настроить все остальные частоты. Внутри контроллеров STM32 есть свой внутренний резонатор (HSI), однако он подвержен дрифту в процессе работы, поэтому мы будем использовать внешний резонатор с частотой 8MHz. Для этого, выберем HSE в PLL Source Mux, и в Input frequency установим 8. Input frequency задается характеристиками внешнего резонатора и всегда фиксирован.
На каждом модуле VBCore есть внешний резонатор 8 MHz. Чтобы использовать его, надо в System Core -> RCC выбрать High Speed Clock -> Crystal/Ceramic Resonator. Все остальное CubeIDE сделает за вас.
Этот блок отвечает за "динамическое" задание частоты, которое может отличаться от частоты входящей. Для этого мы можем выбрать необходимые множители и делители (в нашем случае X80, /2).
Тут мы можем выбрать, какую частоту будем использовать для переферии и системной частоты (HCLK). Практически всегда это будет PLLCLK.
Далее, мы можем выбрать нужные значения делителей (Prescaler) и множителей (X 1, в нашем случае) для получения необходимой частоты переферии. Переферия делится на две шины (APB1, APB2). Какие таймеры и модули (ADC и пр.) относятся к какой шине можно найти в datasheet на контроллер. Частота, полученная здесь, передается дальше в каждый модуль/таймер, после чего работает уже и его Prescaler (например, prescalser таймера мы настраивали в прошлом примере).
Частота большинства модулей коммуникации (SPI, USART, CAN, ...) настраивается отдельно. Принцип точно такой же, надо выбрать источник или просто вписать желаемую частоту.
Например, на картинке выше можно видеть USART1 (тоже справа, под основной переферией). CAN обычно в правом нижнем углу.