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

 
 
 
Reply to this topicStart new topic
> Таймер отрабатывает в 2 раза быстрее, stm32f2
marco
сообщение Dec 17 2012, 10:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 12-12-10
Пользователь №: 61 580



Доброго дня.
STM32F207

Код
// Настраиваю TIM2 (32bits), работающий напрямую от APB1 (30МГц)
TIM_TimeBaseInitTypeDef TIM_InitStructure;
TIM_InitStructure.TIM_Prescaler = 0x0000;
TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Down;
TIM_InitStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseInit(TIM2, &TIM_InitStructure);

TIM_SelectOnePulseMode(TIM2, TIM_OPMode_Repetitive);
TIM_ARRPreloadConfig(TIM2, ENABLE);

TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
NVIC_EnableIRQ(TIM2_IRQn);

// Устанавливаю значение autoreload, равное частоте тактирующего клока (APB1),
// т.е. какой бы клок не был, то при условии отсутствия уможителей
// период таймера равен 1 с.

RCC_ClocksTypeDef rcc_clocks;
RCC_GetClocksFreq(&rcc_clocks);
TIM_SetAutoreload(TIM2, rcc_clocks.PCLK1_Frequency);

TIM_Cmd(TIM2, ENABLE);


На деле получаю период 0,5 с.
Go to the top of the page
 
+Quote Post
Flexz
сообщение Dec 17 2012, 13:26
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Если прескейлер на APB равен единице (т.е. APB рабоатет на частоте AHB), то таймеры работают на частоте шины. Если же прескейлер на APB больше единицы, то таймеры работают на удвоенной частоте шины.
PS см раздел RCC, Clock tree.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 17 2012, 13:28
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Flexz @ Dec 17 2012, 16:26) *
Если прескейлер на APB равен единице (т.е. APB рабоатет на частоте AHB), то таймеры работают на частоте шины. Если же прескейлер на APB больше единицы, то таймеры работают на удвоенной частоте шины.

Т.е. в данном случае, на частоте 60 MHz.
Go to the top of the page
 
+Quote Post
marco
сообщение Dec 17 2012, 14:10
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 12-12-10
Пользователь №: 61 580



Чёрт возьми, как-то я этот момент пролистал. Зачем так сделали, интересно?
Спасибо.
Go to the top of the page
 
+Quote Post
pitt
сообщение Dec 24 2012, 22:19
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(ViKo @ Dec 17 2012, 08:28) *
Т.е. в данном случае, на частоте 60 MHz.

Это смотря какой таймер - они на обеих шинах сидят, т.е. может быть и 120МHz


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 25 2012, 06:08
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(marco @ Dec 17 2012, 18:10) *
Чёрт возьми, как-то я этот момент пролистал. Зачем так сделали, интересно?

Понятно зачем: чтобы таймер мог работать на максимальной частоте.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 25 2012, 06:54
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(pitt @ Dec 25 2012, 01:19) *
Это смотря какой таймер - они на обеих шинах сидят, т.е. может быть и 120МHz

Не может. На частоту шин есть ограничения.
Go to the top of the page
 
+Quote Post
pitt
сообщение Dec 25 2012, 14:43
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(ViKo @ Dec 25 2012, 01:54) *
Не может. На частоту шин есть ограничения.

RM0033 p.48
Цитата
AHB/APB bridges (APB)
The two AHB/APB bridges provide full synchronous connections between the AHB and the two APB buses, allowing flexible selection of the peripheral frequency:
● APB1, limited to 30 MHz for low-speed peripherals
● APB2, limited to 60 MHz for high-speed peripherals

stm32f2xx.h
Код
/*!< APB1 peripherals */
#define TIM2_BASE             (APB1PERIPH_BASE + 0x0000)
#define TIM3_BASE             (APB1PERIPH_BASE + 0x0400)
#define TIM4_BASE             (APB1PERIPH_BASE + 0x0800)
#define TIM5_BASE             (APB1PERIPH_BASE + 0x0C00)
#define TIM6_BASE             (APB1PERIPH_BASE + 0x1000)
#define TIM7_BASE             (APB1PERIPH_BASE + 0x1400)
#define TIM12_BASE            (APB1PERIPH_BASE + 0x1800)
#define TIM13_BASE            (APB1PERIPH_BASE + 0x1C00)
#define TIM14_BASE            (APB1PERIPH_BASE + 0x2000)
...
/*!< APB2 peripherals */
#define TIM1_BASE             (APB2PERIPH_BASE + 0x0000)
#define TIM8_BASE             (APB2PERIPH_BASE + 0x0400)
#define TIM9_BASE             (APB2PERIPH_BASE + 0x4000)
#define TIM10_BASE            (APB2PERIPH_BASE + 0x4400)
#define TIM11_BASE            (APB2PERIPH_BASE + 0x4800)

Еще есть возражения?


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 25 2012, 16:29
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(pitt @ Dec 25 2012, 17:43) *
Еще есть возражения?

Больше нет.
Go to the top of the page
 
+Quote Post
pitt
сообщение Dec 25 2012, 17:26
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(ViKo @ Dec 25 2012, 11:29) *
Больше нет.

С Новым Годом!


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post

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

 


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


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