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

 
 
> прерывание по таймеру, 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



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

 


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


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