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

По поводу HSE_VALUE

Может вопрос глупый или уже обсуждался но НЕ МОГУ ПОНЯТЬ. Проц: STM32F103RC. Ситуация такая был кварц на 16МГц стал на 8МГц. Изменил в HSE_VALUE.

Выстроил PLL что бы получилось 72МГц как и раньше. Все ОК. Проверяю опросом структуры RCC_GetClocksFreq((RCC_ClocksTypeDef *)&rcc_Clocks);

 

__IO RCC_ClocksTypeDef rcc_Clocks;

 

Возвращает:

SYSCLK_Frequency=72000000

PCLK1_Frequency=36000000

PCLK2_Frequency=72000000

HCLK_Frequency=72000000

ADCCLK_Frequency=12000000

Во всех таймерах привязка по опрошеной структуре к примеру

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

или

SysTick_Config(rcc_Clocks.SYSCLK_Frequency/22);

 

Почему по уходили временные диапазоны на половину.

Спасибо за помощь.

 

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


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

Все что изменилось это

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL9);

на

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

 

Теперь что бы получилась 1ms

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 500000) - 1;

а было по нормальному

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

Подскажите, хоть где рыть.

 

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


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

Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1.

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


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

Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1.

 

Если бы ты был внимателен то бит RCC_CFGR_PLLXTPRE это и есть деление на 2. Во второй строке где 8МГц кварц этого бита НЕТ.

 

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


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

Во всех таймерах привязка по опрошеной структуре к примеру

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

 

Почему по уходили временные диапазоны на половину.

Я не знаток куба, но эта строка дать правильный результат не может, ибо посмотрев на картинку:

post-39839-1491206314_thumb.png

Можно увидеть, что для APB1 prescaler > 1, частота сигнала тактирующего таймеры в два раза больше, чем PCLK1 (у Вас PCLK1_Frequency=36000000, прескалер = 2, соответственно таймер тактируется 72МГц).

 

Это объясняет почему:

Теперь что бы получилась 1ms

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 500000) - 1;

а было по нормальному

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

Подскажите, хоть где рыть.

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

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


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

Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц. Изменяется только кварц и соответственно делитель для него

Изменено пользователем IgorKossak
бездумное цитирование

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


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

Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц. Изменяется только кварц и соответственно делитель для него

Измерить частоту подозреваемого таймера не судьба?

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


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

Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц.

Я не знаю, что Вы меняли (кубом не пользуюсь и вникать в него желания нет) - я прокомментировал результат. Очевидно, что при частоте PLL 72МГц и делителе PCLK1 2, частота таймера будет по прежнему 72МГц, а не 36МГц, как Вы считаете здесь:

Возвращает:

SYSCLK_Frequency=72000000

PCLK1_Frequency=36000000

PCLK2_Frequency=72000000

HCLK_Frequency=72000000

ADCCLK_Frequency=12000000

Во всех таймерах привязка по опрошеной структуре к примеру

TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

 

А что там менялось я думаю Вы сами разберетесь - нужно просто внимательно сравнить, что было, и что стало.

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


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

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

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

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

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

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

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

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

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

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