Перейти к содержанию
    

Настройка тактирования STM32F373

Добрый день!

Разобравшись с правильным тактирование USB в мк данного типа, обнаружил, что не могу через функции стандартной библиотеки переферии rcc сконфигурировать частоты шин, и, соответственно, таймера.

Что хочу: хочу, имея внешинй кварц на 8 МГц, получить 48 МГц на шине USB, 48 - Мгц SYSCLK, 24 МГц - APB1, 48 МГц - TIM2.

Пишу код вот такой:

 

/* rcc init start */
RCC_DeInit(); //reset all rcc settings
RCC_HSICmd(DISABLE); //hsi off
RCC_HSEConfig(RCC_HSE_ON); //hse on
RCC_PREDIV1Config(RCC_PREDIV1_Div1);  //div1-hse pll_in
RCC_PLLConfig(RCC_PLLSource_PREDIV1 ,RCC_PLLMul_6); // pll_clock=(8MHz/1)*6=48MHz
RCC_PLLCmd(ENABLE); // pll enable
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //pll_clk is system clk source
RCC_HCLKConfig(RCC_SYSCLK_Div2); //ahb_clk_devider
RCC_PCLK1Config(RCC_HCLK_Div2);  //apb1_clk_devider
/* rcc init end */

 

Далее настраиваю таймер, на мегание в 1-у секунду. И он мигает с частотой около одной секунды. Экспериментально установлено, что он мигает с частотой, соответствующей частоте таймера в 72МГц, а не 48, как планировалось. 72 - это цифра для настроек по умолчанию, но ведь я их заменяю на новые!

 

Попробовал все тоже самое проделать через CubeMX - и получилось с первого раза. Есть какой-то нюанс, видимо в ручной настройки тактирования.

 

Если кто-то понимает в чем дело - помогите, пожалуйста.

Изменено пользователем styuf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А PLL от чего тактируется? Reference Manual круче StdLib + CubeMX.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PLL тактирует от внешнего источника (на это указывает данный параметр - RCC_PLLSource_PREDIV1).

Схема тактирования проинициализирована согласна reference manual: внешний источник подается через предделитель с коэффициентом 1 на PLL (в котором умножается на 6), затем выбирается как источник для системного клока.

 

В то-то и проблема. Я сначала написал код. потом те же коэффициенты и клоки использовал в сube. В первом случае нет результата, во втором присутствует.

Изменено пользователем styuf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для меня не очевидно по имени PREDIV1, что используется HSE.

Вообще, при включении HSE нужно дождаться его включения. Аналогично и с PLL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...