|
Таймер отрабатывает в 2 раза быстрее, stm32f2 |
|
|
|
Dec 17 2012, 10:33
|
Участник

Группа: Участник
Сообщений: 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 с.
|
|
|
|
|
 |
Ответов
|
Dec 24 2012, 22:19
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(ViKo @ Dec 17 2012, 08:28)  Т.е. в данном случае, на частоте 60 MHz. Это смотря какой таймер - они на обеих шинах сидят, т.е. может быть и 120МHz
--------------------
|
|
|
|
|
Dec 25 2012, 14:43
|
Местный
  
Группа: Участник
Сообщений: 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) Еще есть возражения?
--------------------
|
|
|
|
|
Dec 25 2012, 17:26
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(ViKo @ Dec 25 2012, 11:29)  Больше нет. С Новым Годом!
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|