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

 
 
> STM32F103C8T - перезапуск таймера от внешнего сигнала
varvar
сообщение Mar 27 2016, 09:04
Сообщение #1


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

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Пытаюсь перенести на STM32 свой старый проект на MSP430. И второй день туплю с применением таймера.
Делаю OSD. Алгоритм простой - на ногу 10 (PA0) подключен HSYNC. От него должен запустится таймер (TIM2) и запустить через какое-то время DMA и вызвать прерывание. Хотелось бы все сделать с минимумом кода, момент запуска DMA должен быть точно привязан к HSYNC, иначе изображение будет дергаться.
Задом чуствую, как-то надо использовать one pulse mode, но не выходит каменный цветок sad.gif
Прошу помощи более опытных товарищей - с STM32 я только начал играться. Ткните носом в пример кода инициализации таймера sm.gif

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
varvar
сообщение Mar 27 2016, 11:51
Сообщение #2


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

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Спасибо на добром слове, вот такая заготовка заработала:
CODE
void hsync_timer_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

/* Time base configuration */
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 100;
TIM_TimeBaseStructure.TIM_Prescaler = 72-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

/* TIM2 PWM2 Mode configuration: Channel1 */
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 20;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);

/* TIM2 configuration in Input Capture Mode */

TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICStructInit(&TIM_ICInitStructure);
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0;
TIM_ICInit(TIM2, &TIM_ICInitStructure);

/* One Pulse Mode selection */
TIM_SelectOnePulseMode(TIM2, TIM_OPMode_Single);
/* Input Trigger selection */
TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);
/* Slave Mode selection: Trigger Mode */
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Trigger);
//TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE)
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);

TIM_Cmd(TIM2, ENABLE);
NVIC_EnableIRQ(TIM2_IRQn);
}

void TIM2_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
SPI1->DR |= 0xCCCC;
SPI2->DR |= 0x3333;
}


Понять бы почему, мне кажется, что

TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);

не в тему, должно быть TIM_TS_TI1FP1

А куб, конечно, хорошая вещь, когда памяти немеряно и спешить некуда. Ну и не удалось мне совместить HAL с scmRTOS.

Сообщение отредактировал IgorKossak - Mar 28 2016, 07:46
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- varvar   STM32F103C8T - перезапуск таймера от внешнего сигнала   Mar 27 2016, 09:04
- - kolobok0   Цитата(varvar @ Mar 27 2016, 12:04) ...Тк...   Mar 27 2016, 10:56
- - scifi   Можно и по старинке - почитать мануал, понять, как...   Mar 27 2016, 10:58
|- - AleksBak   Цитата(varvar @ Mar 27 2016, 15:51) ...Ну...   Mar 28 2016, 06:07
- - varvar   scmRTOS чудесно работает с CMSIS, а куб генерирует...   Mar 28 2016, 08:19
|- - AleksBak   Цитата(varvar @ Mar 28 2016, 12:19) scmRT...   Mar 28 2016, 09:30
- - varvar   Цитата(AleksBak @ Mar 28 2016, 12:30) А г...   Mar 28 2016, 09:51
|- - AleksBak   Цитата(varvar @ Mar 28 2016, 13:51) На со...   Mar 28 2016, 11:07
|- - jcxz   Цитата(varvar @ Mar 28 2016, 15:51) На со...   Mar 28 2016, 16:35
- - Tarbal   Цитата(varvar @ Mar 27 2016, 13:04) Пытаю...   Mar 28 2016, 14:05
- - varvar   Цитата(Tarbal @ Mar 28 2016, 17:05) Я бы ...   Mar 28 2016, 15:27
|- - Tarbal   Цитата(varvar @ Mar 28 2016, 19:27) Приме...   Mar 28 2016, 18:38
|- - jcxz   Цитата(Tarbal @ Mar 29 2016, 00:38) Я с к...   Mar 28 2016, 23:53
- - varvar   Цитата(jcxz @ Mar 28 2016, 19:35) Всё в с...   Mar 28 2016, 16:48
|- - jcxz   Цитата(varvar @ Mar 28 2016, 22:48) И все...   Mar 28 2016, 16:58
- - Tarbal   Та мода, что вы описали есть в STM32F429. В описан...   Mar 29 2016, 02:40
- - Tarbal   Ну что у вас? Получилось?   Apr 1 2016, 15:15
- - varvar   Цитата(Tarbal @ Apr 1 2016, 18:15) Ну что...   Apr 2 2016, 13:54
- - Tarbal   Ну и хорошо   Apr 3 2016, 17:21
- - Огурцов   почему бы не использовать spi в режиме slave, дёрг...   Apr 3 2016, 18:09
- - varvar   Цитата(Огурцов @ Apr 3 2016, 21:09) почем...   Apr 4 2016, 08:34


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

 


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


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