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

 
 
 
Reply to this topicStart new topic
> STM32F4: Таймер на мс/мкс
k000858
сообщение Feb 18 2014, 11:25
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Кварц на 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мкс/мс срабатывания прерывания?
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Feb 18 2014, 17:42
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



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


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

STM32F4xx_Clock_Configuration_V1.xls

это будет самый полный ответ, на Ваш вопрос. Плюс сможете наглядно поиграться значениями PLL и делителей, поняв что на что влияет...
Go to the top of the page
 
+Quote Post
RuSTA
сообщение Feb 18 2014, 17:50
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 25-10-10
Из: Россия
Пользователь №: 60 410



Если вы о general timers, то они подключены к APB шине, т.е. 42 МГц. Таким образом 42/2 полученное значение надо записать в ARR. Это для периода в 1мкс. Если для 1 мс, то в prescaler(PSC) запихнуть 1000 а в ARR тоже что и ранее.
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 18 2014, 18:22
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(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МГц, к шине подключен инрерфейс - тоесть регистры, счетный регистр клокается независимо от шины.
Go to the top of the page
 
+Quote Post
k000858
сообщение Feb 19 2014, 02:56
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Уточню:
Для начала пытаюсь завести базовый таймер 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
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th July 2025 - 03:18
Рейтинг@Mail.ru


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