stm32 захват значения таймера
- Сообщения: 13
- Зарегистрирован: Вт окт 08, 2013 20:37:39
Скажите,есть ли возможность как-нибудь сохранить последнее значение таймера перед его сбросом? таймер находится в режиме reset mode, сбрасывается внешним сигналом.конечно можно другим таймером замерять период сигнала update generation,но мне не подходит это.
- Реклама
Не, надо всяко вручную сбрасывать.
only pure true norwegian blackx 
- Сообщения: 13
- Зарегистрирован: Вт окт 08, 2013 20:37:39
необходим именно внешний сброс,но также нужно знать последнее значение таймера. вручную никак
- Сообщения: 535
- Зарегистрирован: Вт авг 28, 2012 22:21:33
Не знаю, про что ты говоришь, но во всех МК, что я видел, у таймера есть функция "захвата" (capture). Она заключается в том, что таймер сбрасывается внешним сигналом, при этом сохраняя значение счетчика в capture-регистр. Посмотри внимательной свой даташит, может у твоего таймера тоже есть этот функционал.
не понимаю, о чем вы говорите . Вся прелесть режима захвата заключается в том, что получаются максимально точные значения времени именно тогда, когда таймер не "дергают" - как он себе тикал, так и тикает. Любые манипуляции с счетным регистром - обнулить его, установить значение - сразу ставит крест на точности.
Код: Выделить всё
TIM_ICInitTypeDef timer_ic;
/* TIM2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 65535;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* Prescaler configuration */
/* Настраиваем захват сигнала:
- канал: 1
- направление: по нарастанию
- источник: напрямую со входа
- делитель: отключен
- фильтр: отключен */
timer_ic.TIM_Channel = TIM_Channel_1;
timer_ic.TIM_ICPolarity = TIM_ICPolarity_Rising;
timer_ic.TIM_ICSelection = TIM_ICSelection_DirectTI;
timer_ic.TIM_ICPrescaler = TIM_ICPSC_DIV1;
timer_ic.TIM_ICFilter = 0;
TIM_ICInit(TIM2, &timer_ic);
/* Разрешаем таймеру генерировать прерывание по захвату */
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Как это нынче - вау , что я вижу !
Юра на STM перешел .
Приветствую!!!!
Юра на STM перешел .
Приветствую!!!!
(c) Кругом одно и то же, а в Антартиде вдобавок холодно...
Разница не такая и большая, если месяц помучиться.
Понадобилось в задаче 6 каналов захвата... И мелкий корпус.
Разница не такая и большая, если месяц помучиться.


