реклама на сайте
подробности

 
 
> По поводу HSE_VALUE
dimon_rub
сообщение Apr 2 2017, 12:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



Может вопрос глупый или уже обсуждался но НЕ МОГУ ПОНЯТЬ. Проц: 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);

Почему по уходили временные диапазоны на половину.
Спасибо за помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
dimon_rub
сообщение Apr 2 2017, 14:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



Все что изменилось это
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;
Подскажите, хоть где рыть.
Go to the top of the page
 
+Quote Post
x893
сообщение Apr 2 2017, 16:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1.
Go to the top of the page
 
+Quote Post
dimon_rub
сообщение Apr 2 2017, 19:09
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



Цитата(x893 @ Apr 2 2017, 16:23) *
Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1.


Если бы ты был внимателен то бит RCC_CFGR_PLLXTPRE это и есть деление на 2. Во второй строке где 8МГц кварц этого бита НЕТ.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 3 2017, 05:16
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



del
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 3 2017, 08:01
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(dimon_rub @ Apr 2 2017, 15:34) *
Во всех таймерах привязка по опрошеной структуре к примеру
TIM3->PSC = (rcc_Clocks.PCLK1_Frequency / 1000000) - 1;

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

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

Можно увидеть, что для 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;
Подскажите, хоть где рыть.


Сообщение отредактировал Шаманъ - Apr 3 2017, 08:03
Go to the top of the page
 
+Quote Post
dimon_rub
сообщение Apr 8 2017, 05:42
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



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

Сообщение отредактировал IgorKossak - Apr 8 2017, 08:18
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2017, 07:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(dimon_rub @ Apr 8 2017, 07:42) *
Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц. Изменяется только кварц и соответственно делитель для него

Измерить частоту подозреваемого таймера не судьба?
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Apr 8 2017, 10:33
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(dimon_rub @ Apr 8 2017, 08:42) *
Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 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;


А что там менялось я думаю Вы сами разберетесь - нужно просто внимательно сравнить, что было, и что стало.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01402 секунд с 7
ELECTRONIX ©2004-2016