| Форум РадиоКот https://radiokot.ru/forum/ |
|
| STM32F030F4P6 TIM14 https://radiokot.ru/forum/viewtopic.php?f=59&t=199385 |
Страница 1 из 1 |
| Автор: | aleksey chilov [ Вт окт 14, 2025 09:50:57 ] |
| Заголовок сообщения: | STM32F030F4P6 TIM14 |
Код: // PA7 INTERRUPTIONS_CAPTURE MODIFY_REG(GPIOA->MODER, GPIO_MODER_MODER6_Msk, 0b10 << GPIO_MODER_MODER6_Pos); // PA7 Режим альтернативных функций MODIFY_REG(GPIOA->AFR[4], GPIO_AFRL_AFSEL7_Msk, 0b0100 << GPIO_AFRL_AFSEL7_Pos); // AF-4 PA7 MODIFY_REG(GPIOA->PUPDR, GPIO_PUPDR_PUPDR6_Msk, 0b00 << GPIO_PUPDR_PUPDR6_Pos); // PA7 Без подтягивания MODIFY_REG(GPIOA->OSPEEDR, GPIO_OSPEEDR_OSPEEDR0_Msk, 0b11 << GPIO_OSPEEDR_OSPEEDR0_Pos); //PA0 High speed Код: void TIM14_capture(void){ SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN); // Тактирование TIM14 ON CLEAR_BIT(TIM14->CR1,TIM_CR1_CEN); // Счётчик OFF CLEAR_BIT(TIM14->CCMR1,TIM_CCMR1_OC1PE); // Регистр предварительной загрузки в TIMx_CCR1 OFF SET_BIT(TIM14->CCER,TIM_CCER_CC1E); // включение выхода захвата/сравнения 1. //_____ // Биты CC1P и CC1NP работают в паре, определяя режим захвата таймера по фронтам //_____ // ---------- ТАК ПО ПАДАЮЩЕМУ ФРОНТУ ---------- SET_BIT(TIM14->CCER,TIM_CCER_CC1P); // 0b10 CLEAR_BIT(TIM14->CCER,TIM_CCER_CC1NP); // 0b10 // ---------- ТАК ПО НАРАСТАЮЩЕМУ ФРОНТУ ---------- //CLEAR_BIT(TIM14->CCER,TIM_CCER_CC1P); // 0b00 //CLEAR_BIT(TIM14->CCER,TIM_CCER_CC1NP); // 0b00 // ---------- ТАК ПО ОБОИМ ФРОНТАМ ---------- //SET_BIT(TIM14->CCER,TIM_CCER_CC1P); // 0b11 //SET_BIT(TIM14->CCER,TIM_CCER_CC1NP); // 0b11 //_____ MODIFY_REG(TIM14->OR, TIM14_OR_TI1_RMP_Msk, 0b00 << TIM14_OR_TI1_RMP_Pos); // Канал 1 TIM14 альтернативное назначение функций MODIFY_REG(TIM14->CCMR1, TIM_CCMR1_CC1S_Msk, 0b01 << TIM_CCMR1_CC1S_Pos); // Канал CC1 настроен как вход, IC1 сопоставлен с TI1 CLEAR_BIT(TIM14->DIER, TIM_DIER_UIE); // Прерывание обновления OFF SET_BIT(TIM14->DIER, TIM_DIER_CC1IE); // Прерывание CC1 ON TIM14->PSC = 48 - 1; // 1 тик микросек. TIM3->ARR = 65535 - 1; NVIC_EnableIRQ(TIM14_IRQn); // Разрешить прерывания SET_BIT(TIM14->CR1,TIM_CR1_CEN); // Счётчик включен } Код: void TIM14_IRQHandler(void){ if(READ_BIT(TIM14->SR,TIM_SR_CC1IF) != RESET){ // Проверить и сбросить флаг!!! CLEAR_BIT(TIM14->SR,TIM_SR_CC1IF); // Сбросить флаг!!! test++; } } Добрый день форумчане! Есть такой вопрос. Нужно измерять длительность сигнала, для декодирования ИК от ПДУ. Решил использовать для этой задачи таймер по захвату фронта. ( падающего ) Открыл референс, там посмотрел-полистал вроде бы там описано как это всё дело включить. В итоге всегда попадаю в обработчик постоянно и кручусь там. Установил туа тестовую переменную и в отладке чётко видно что всё крутится там и переменная всегда инкрементируется но при этом на входе PA7 ни чего нет, генератор сигналов не подключён. Я прошу помочь, посмотрите на настройки и укажите на ошибку в настройках. Ибо не вижу где проблема, не могу сам найти где не так настроил. Спасибо! |
|
| Автор: | linux_rulezz [ Вт окт 14, 2025 10:00:14 ] |
| Заголовок сообщения: | Re: STM32F030F4P6 TIM14 |
Magick numbers - зло! Как без документации понять, правильно ли таймер настроен? Нужно выбирать режим захвата. Тогда прерывание будет правильным, а в CCx поместится количество тиков от старта периода до внешнего события. А пока можно в CC1R поместить значение больше ARR. И прерывания прекратятся. |
|
| Автор: | Adrift [ Вт окт 14, 2025 11:32:17 ] |
| Заголовок сообщения: | Re: STM32F030F4P6 TIM14 |
при этом на входе PA7 ни чего нет, генератор сигналов не подключён. Если на входе ничего нет, то почему вы подтяжку выключили? |
|
| Автор: | Мурик [ Вт окт 14, 2025 18:34:25 ] |
| Заголовок сообщения: | Re: STM32F030F4P6 TIM14 |
aleksey chilov писал(а): Решил использовать для этой задачи таймер по захвату фронта. ( падающего ) Можно и ШИМ захват http://we.easyelectronics.ru/STM32/ir-u ... ast-1.htmlDMA прикрутить и выход по таймауту по 3 каналу таймера. |
|
| Автор: | jcxz [ Вт окт 14, 2025 18:58:50 ] |
| Заголовок сообщения: | Re: STM32F030F4P6 TIM14 |
Нужно измерять длительность сигнала, для декодирования ИК от ПДУ. Для декодирования посылок ИК-пульта нужно захватывать как фронт так и спад.Решил использовать для этой задачи таймер по захвату фронта. ( падающего ) Я прошу помочь, посмотрите на настройки и укажите Вы ошиблись форумом. Вам нужно на форум медиумов и прорицателей. Которые угадают - что скрывается за всеми этими вашими MODIFY_REG, CLEAR_BIT и т.п.? И всеми остальлными символическими именами. Определения которых вы "забыли" привести.на ошибку в настройках. Ибо не вижу где проблема, не могу сам найти где не так настроил. Здесь все медиумы в отпусках. |
|
| Автор: | aleksey chilov [ Ср окт 15, 2025 08:13:05 ] |
| Заголовок сообщения: | Re: STM32F030F4P6 TIM14 |
Извиняюсь. Все те формы записи это библиотека CMSIS Ну извините, не я это всё придумывал это уже вопросы к производителю софта. И самих контролеров STM32. Какие синонимы прописали в библиотеке такие и пишу. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


