С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/28: Рейтинг темы: голосов - 28, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
1

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

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

Author24 — интернет-сервис помощи студентам
Нужно по сравнению таймера выпасть в прерывание и дернуть ногой
Код
//описываю прерывание
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2012, 17:27
Ответы с готовыми решениями:

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

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

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

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

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
01.03.2012, 09:49
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2012, 09:49
Помогаю со студенческими работами здесь

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

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

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

STM8S + TIM2 = 100kHz на канале №2
Друзья! Есть задачка организовать на ножке порта генератор 100кГц (время нуля = время единицы)...

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

таймера TIM2,3,4 F205, непонятки в работе (сбивается период)
Заметил, что сбивается время периодов таймеров, после некоторого времени работы, причём это время...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru