Top.Mail.Ru
Уведомления
Очистить все

stm32f103c8t6 от кварца 16 мГц стартует на двойной частоте 144 мГц

(@protoder)
New member

Запускаю микроконтроллер от кварца на 16 мГц. Соответственно, предделитель на 2, PLLx9
Однако при выводе частоты на ногу с помощью таймера или MCO все выглядит так, как будто микроконтроллер стартует на 144 мГц (MCO выводит 72 мГц).
Ниже привожу код с выводом на MCO 

#include "stm32f10x.h"

#define HSE_VALUE (16000000U)

int main(void) {
    // Включить HSE
    RCC->CR |= RCC_CR_HSEON;
    while (!(RCC->CR & RCC_CR_HSERDY)) {
        // ждём готовности HSE
    }

    // Настроить PLL
#if HSE_VALUE == 8000000U
    RCC->CFGR |= RCC_CFGR_PLLSRC;          // Источник PLL = HSE
    RCC->CFGR |= RCC_CFGR_PLLMULL9;        // ×9 → 72 MHz
#elif HSE_VALUE == 16000000U
    RCC->CFGR |= RCC_CFGR_PLLXTPRE;        // HSE/2
    RCC->CFGR |= RCC_CFGR_PLLSRC;          // Источник = HSE/2
    RCC->CFGR |= RCC_CFGR_PLLMULL9;        // ×9 → 72 MHz
#else
#error "Unsupported HSE value"
#endif

    // Включить PLL
    RCC->CR |= RCC_CR_PLLON;
    while (!(RCC->CR & RCC_CR_PLLRDY)) {
        // ждём готовности PLL
    }

    // Переключиться на PLL
    RCC->CFGR |= RCC_CFGR_SW_PLL;
    while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) {
        // ждём переключения
    }

    // Включить тактирование GPIOA для MCO (PA8)
    RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

    // Настроить PA8 как AF output (50 MHz, push-pull)
    GPIOA->CRH &= ~(0xFU << 0);   // очистить биты PA8
    GPIOA->CRH |= (0xBU << 0);    // 1011 = AF, 50 MHz

    // Вывести PLL/2 (36 МГц) на PA8 (MCO)
    RCC->CFGR &= ~RCC_CFGR_MCO;   // очистить поле MCO
    RCC->CFGR |= RCC_CFGR_MCO_2;  // MCO = PLL/2

    while (1) {
        // PA8 теперь генерирует 36 МГц
    }
}


Цитата
Создатель темы Размещено : 07.10.2025 11:58
Aveal
(@aveal)
Top level Admin

Детально нет возможности сейчас посмотреть, навскидку проблема в RCC_CFGR_MCO_2, на выходе MCO скорее всего видите SYSCLK, без деления на 2:

изображение

Практически уверен, что RCC_CFGR_MCO_2 соответствует обведенному.


ОтветитьЦитата
Размещено : 07.10.2025 12:20
Поделиться:
Обзор конфиденциальности

На этом сайте используются файлы cookie, что позволяет нам обеспечить наилучшее качество обслуживания пользователей. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас при возвращении на наш сайт и помощь нашей команде в понимании того, какие разделы сайта вы считаете наиболее интересными и полезными.