STM32 TIM4 remap в режиме энкодера

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Добрый день!
Проблема в следующем. Есть необходимость подключить энкодер на ремапнутые выводы TIM4 в STM32F103ZET6. Все заработало и было бы классно, но мне понадобилось задействовать и прерывания от EXTI Lines. А вот если включить тактирование модуля AFIO, то таймер прекращает реагировать на изменение состояния своих переадресованных ног. От порядка включения тактирования наличие проблемы не зависит. К сожалению, нет возможности проверить, будет ли то же происходить без remap-a (готовая отладочная плата - удобства в соседнем дворе). Может кто сталкивался с таким?
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Ну вот, сам спросил, сам ответил. Проблема решилась. Нужно было включить тактирование AFIO уже после инициализации выводов и таймера, а так же включения таймера. Странно, ведь рекомендованный производителем порядок - включить тактирование для всех используемых модулей, потом их инициализировать.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

РадиоЛоматель писал(а):Нужно было включить тактирование AFIO уже после инициализации выводов и таймера, а так же включения таймера. Странно, ведь рекомендованный производителем порядок - включить тактирование для всех используемых модулей, потом их инициализировать.
Не может быть ! Возможно где-то во время инициализации с AFIO как-то не правильно работали, или AFIO случайно выключали (запустив не ту функцию, например RCC...reset(AFIO..) ).
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Zud писал(а):Не может быть ! Возможно где-то во время инициализации с AFIO как-то не правильно работали, или AFIO случайно выключали (запустив не ту функцию, например RCC...reset(AFIO..) ).
Нет. AFIO используется в программе впервые, нигде не выключается. Более того, если никакой другой работы с AFIO, кроме включения тактовой, не делать, то таймер все равно отваливается. Если включение тактовой перенести за инициализацию таймера - все работает.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «ARM»