dimon_rub 0 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Может вопрос глупый или уже обсуждался но НЕ МОГУ ПОНЯТЬ. Проц: 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); Почему по уходили временные диапазоны на половину. Спасибо за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimon_rub 0 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Все что изменилось это 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; Подскажите, хоть где рыть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimon_rub 0 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Возьмите Cube и посмотрите как правильно нужно настроить генератор (вторая закладка - в картринках). Делитель входящий настроен был на 2 - так и остался, а надо на 1. Если бы ты был внимателен то бит RCC_CFGR_PLLXTPRE это и есть деление на 2. Во второй строке где 8МГц кварц этого бита НЕТ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба del Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 (изменено) · Жалоба Во всех таймерах привязка по опрошеной структуре к примеру 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; Подскажите, хоть где рыть. Изменено 3 апреля, 2017 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimon_rub 0 8 апреля, 2017 Опубликовано 8 апреля, 2017 (изменено) · Жалоба Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц. Изменяется только кварц и соответственно делитель для него Изменено 8 апреля, 2017 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 апреля, 2017 Опубликовано 8 апреля, 2017 · Жалоба Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 72МГц. Изменяется только кварц и соответственно делитель для него Измерить частоту подозреваемого таймера не судьба? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 8 апреля, 2017 Опубликовано 8 апреля, 2017 · Жалоба Я конечно только учусь но и то я вижу что и впервом и втором случае конечная частота проца была 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; А что там менялось я думаю Вы сами разберетесь - нужно просто внимательно сравнить, что было, и что стало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться