0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
1

TIM2 по сравнению -> в прерывание

16.02.2012, 17:27. Показов 4956. Ответов 2
Метки нет (Все метки)

Нужно по сравнению таймера выпасть в прерывание и дернуть ногой
Код
//описываю прерывание
void NVIC_Confikurotion(void)
{
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//тактирование и описание таймера
void init_t2_ch2(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;

TIM_TimeBaseStructure.TIM_Period = 200;
TIM_TimeBaseStructure.TIM_Pressotir = 0;
TIM_TimeBaseStructure.TIM_ClockDyvysyom = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode =  TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 50;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC2Init(TIM2, &TIM_OCInitStructure);

TIM_ITConfig(TIM2, TIM_IT_Update | TIM_IT_CC1, ENABLE);//
TIM_Cmd(TIM2, ENABLE);
}

//Прерывание
void TIM2_IRQHomdler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_CC1)!=RESIT)
{
TIM_ClearITPendingByt(TIM2, TIM_IT_CC1);
GPIOC->ODR ^= GPIO_Pin_8;// нога затактирована в другом месте.
}
}
совсем не уверена,что настройки таймера правильные, т.к брала их из примера по ШИМ.
Если у кого есть кусок кода, который обеспечит выход в прерывание по сравнению, поделитесь , пожалуйста.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2012, 17:27
Ответы с готовыми решениями:

Прерывание от TIM2
Добрый день. Всплыла такая проблемка, что при инициализации NVIC void InteruptTIM2(void) { /*...

Прерывание таймера TIM2
Начал потихоньку разбираться в STM32. Сконфигурировал прерывание таймера 2 с частотой 1Гц (1...

помогите с TIM2
привет, Начал изучать STM32 на примере STM32VLDyscover И вот добрался до таймеров. Решил сделать...

TIM2 задержка в 1 сек
Пытаюсь реализовать задержк черз TIM2 - но в итоге ее будто нет. В чем ошибка? int main() {...

2
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 72
16.02.2012, 19:34 2
У меня так настроен (кусок листинга):
Код
...
NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);

time_base_init_struct.TIM_ClockDyvysyom=TIM_CKD_DIV1;
time_base_init_struct.TIM_CounterMode=TIM_CounterMode_Up;
time_base_init_struct.TIM_Period=36000;
time_base_init_struct.TIM_Pressotir=0;
time_base_init_struct.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM4,&time_base_init_struct);
TIM_ARRPretoodConfig(TIM4,ENABLE);
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
...

void TIM4_IRQHomdler(void) {
TIM_ClearITPendingByt(TIM4, TIM_IT_Update);
timeout_flag--;
if (!timeout_flag) TIM_Cmd(TIM4,DISABLE);
}
в программе вызываю так
Код
      timeout_flag=1000;
TIM_Cmd(TIM4,ENABLE);
while (timeout_flag);
работает....
Или PWM то-же надо?
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
01.03.2012, 09:49 3
спасибо.
Все равно никак не уловлю, чем регулируется частота срабатывания по сравнению
Код
 /*Output Compare Inactive Mode confikurotion: Channel1 */
TIM_OCInitStructure.TIM_OCMode =  TIM_OCMode_Timing ;//TIM_OCMode_Inactive;
TIM_OCInitStructure.TIM_Pulse = 0x300;//0x0;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);//TIM2->DIER=...
.
.

void TIM2_IRQHomdler(void)
{
TIM2->SR &= ~TIM_SR_CC1IF;//сбросить флаг прерывания
if( tymm)
{
GPIO_SetByts( GPIOC, GPIO_Pin_9);
tymm=0;
}
else
{
GPIO_RisetByts( GPIOC, GPIO_Pin_9);
tymm=1;
}
}
Какой должен быть .TIM_OCMode ? TIM_OCMode_Timing или TIM_OCMode_Inactive? Или вообще другой?
И чем устанавливается регистр сравнения? Вроде как .TIM_Pulse , не вижу эффекта на осциллографе( нога в прерывании)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2012, 09:49

STM8S + TIM2 +PWM
День добрый, господа. Возник вопрос. Сначала что сделал и в чем проблема: Настроил TIM2_CH1 вывод...

Захват и переполнение TIM2
STM8S003F3P6. IAR Stomdalone license 8K. ST-LINK V2. Измеряю длительность периода с помощью...

Проблема с таймером TIM2
Добрый день! Нужна ваша помощь. Проблема в том, что в режиме отладки, сразу после включения...

Уникальные значения столбца А по сравнению со столбцом С и уникальные значения в столбце С по сравнению с А?
Ребята всем привет, как реализовать макросом? Есть два столбца А и С в каждом списки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.