Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F4: Таймер на мс/мкс
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
k000858
Кварц на 25Мгц.

Код
*=============================================================================
  *==========================================================================
===
  *               Supported STM32F40xx/41xx/427x/437x devices
  *-----------------------------------------------------------------------------
  *        System Clock source                    | PLL (HSE)
  *-----------------------------------------------------------------------------
  *        SYSCLK(Hz)                             | 168000000
  *-----------------------------------------------------------------------------
  *        HCLK(Hz)                               | 168000000
  *-----------------------------------------------------------------------------
  *        AHB Prescaler                          | 1
  *-----------------------------------------------------------------------------
  *        APB1 Prescaler                         | 4
  *-----------------------------------------------------------------------------
  *        APB2 Prescaler                         | 2
  *-----------------------------------------------------------------------------
  *        HSE Frequency(Hz)                      | 25000000
  *-----------------------------------------------------------------------------
  *        PLL_M                                  | 25
  *-----------------------------------------------------------------------------
  *        PLL_N                                  | 336
  *-----------------------------------------------------------------------------
  *        PLL_P                                  | 2
  *-----------------------------------------------------------------------------
  *        PLL_Q                                  | 7
  *-----------------------------------------------------------------------------
  *        PLLI2S_N                               | NA
  *-----------------------------------------------------------------------------
  *        PLLI2S_R                               | NA
  *-----------------------------------------------------------------------------
  *        I2S input clock                        | NA
  *-----------------------------------------------------------------------------
  *        VDD(V)                                 | 3.3
  *-----------------------------------------------------------------------------
  *        Main regulator output voltage          | Scale1 mode
  *-----------------------------------------------------------------------------
  *        Flash Latency(WS)                      | 5
  *-----------------------------------------------------------------------------
  *        Prefetch Buffer                        | ON
  *-----------------------------------------------------------------------------
  *        Instruction cache                      | ON
  *-----------------------------------------------------------------------------
  *        Data cache                             | ON
  *-----------------------------------------------------------------------------
  *        Require 48MHz for USB OTG FS,          | Disabled
  *        SDIO and RNG clock                     |
  *-----------------------------------------------------------------------------


Какие значения прескаллера/периоды должны быть для 1мкс/мс срабатывания прерывания?
kolobok0
Цитата(k000858 @ Feb 18 2014, 15:25) *
...Какие значения прескаллера/периоды должны быть..


существует от автора МК типа такой эксель "прожки"

STM32F4xx_Clock_Configuration_V1.xls

это будет самый полный ответ, на Ваш вопрос. Плюс сможете наглядно поиграться значениями PLL и делителей, поняв что на что влияет...
RuSTA
Если вы о general timers, то они подключены к APB шине, т.е. 42 МГц. Таким образом 42/2 полученное значение надо записать в ARR. Это для периода в 1мкс. Если для 1 мс, то в prescaler(PSC) запихнуть 1000 а в ARR тоже что и ранее.
klen
Цитата(RuSTA @ Feb 18 2014, 21:50) *
Если вы о general timers, то они подключены к APB шине, т.е. 42 МГц. Таким образом 42/2 полученное значение надо записать в ARR. Это для периода в 1мкс. Если для 1 мс, то в prescaler(PSC) запихнуть 1000 а в ARR тоже что и ранее.

я подозреваю что немного не так, подозреваю что GP таймеры тактируются поразному - tim9/10/11 клокаются sysclock тоесть 168МГц, а остальные 84МГц, к шине подключен инрерфейс - тоесть регистры, счетный регистр клокается независимо от шины.
k000858
Уточню:
Для начала пытаюсь завести базовый таймер TIM7 на мкс/мс
уже после этого буду разводить general-purpose поканально.

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

оставлю тут часть инфы по инициализации, может кому полезно будет
с данными настройками прерывание TIM7 вызывается каждую 1 мс

Код
#define TIM7_CNT_CLK    6000000    // TIM7 counter clock (Hz)
#define TIM7_FREQ        1000    // TIM7 Frequency (Hz)
#define TIM7_PRD        ((TIM7_CNT_CLK/TIM7_FREQ) - 1)    // Period = TIM_counter_clk/F - 1

TIM_TimeBaseStructure.TIM_Period = TIM7_PRD;

PrescalerValue = (uint16_t) ((SystemCoreClock / 2) / TIM7_CNT_CLK) - 1;    // Compute the prescaler value
TIM_PrescalerConfig(TIM7, PrescalerValue, TIM_PSCReloadMode_Immediate);    // Prescaler configuration
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.