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

 
 
> прерывание по таймеру, stm32f4xx
xheli
сообщение Jan 24 2012, 15:25
Сообщение #1





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



Пробую сделать обычный таймер, вроде работает, но вот первое прерывание вызывается сразу же после старта.
Т.е. настраиваю таймер на 5 секунд, делаю TIM_Cmd(TIM7, ENABLE), запускаю, микропроцессор стартует и сразу же срабатывает прерывание, затем все как надо, каждые пять секунд или сколько задам.
Как сделать, чтобы не было первого "ложного" срабатывания? Запустил проц и только через N сек сработало.
Вот код:
CODE

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM7, ENABLE );

NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

TIM_TimeBaseStructure.TIM_Period = ms * 2;
TIM_TimeBaseStructure.TIM_Prescaler = ( uint16_t ) ( SystemCoreClock / APB1_PRESCALER * 2 / 2000 ) - 1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit ( TIM7, &TIM_TimeBaseStructure );

TIM_ITConfig ( TIM7, TIM_IT_Update, ENABLE );
TIM_Cmd ( TIM7, ENABLE );


и обработчик прерывания:

CODE

void TIM7_IRQHandler ( void )
{
if ( TIM_GetITStatus ( TIM7, TIM_IT_Update ) != RESET )
{
TIM_ClearITPendingBit ( TIM7, TIM_IT_Update );
}

...
}


Микропроцессор stm32f417

Сообщение отредактировал xheli - Jan 24 2012, 15:26


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
batisto4ka
сообщение Feb 21 2012, 12:12
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



проверила, прескаллер АРВ1 = 2.В чем тогда причина
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 21 2012, 12:17
Сообщение #3


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

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



Цитата(batisto4ka @ Feb 21 2012, 15:12) *
проверила, прескаллер АРВ1 = 2.В чем тогда причина

В нем и есть... Внимательно изучите уже сказанное в ответ.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 21:03
Рейтинг@Mail.ru


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