Top.Mail.Ru
Уведомления
Очистить все

[Решено] Прочитать состояние порта GPIO в режиме альтернативной функции

(@evgeniysol)
New member

Доброго времени суток, у меня вопрос по портам ввода-вывода GPIO. Можно ли читать состояние вывода через HAL_GPIO_ReadPin(), когда этот вывод используется другой периферией (USART, таймер и т.д.), то есть вывод настроен на режим альтернативной функции?

Надеюсь, что понятно объяснил свои мысли.

Цитата
Создатель темы Размещено : 25.02.2022 12:54
Метки темы
(@eduard)
Level 4 Moderator

Если посмотреть схему порта, то можно увидеть, что состояние пина читается через входной регистр данных, который стоит после триггера Шмитта.

изображение

Альтернативная функция идёт через отвод до этого регистра и связь неразрываемая.

Скорее должно получится.

Хорошо, что задали этот вопрос. Если всё работает так как предполагается. Можно будет строить более сложные взаимодействия с GPIO.

Лишь бы HAL не порезал эту возможность. Если через него не получится, можно попробовать считать регистр напрямую.

Единственное что вы сможете считать, только то что альтернативная функция будет пихать на вывод или читать с него.

 

ОтветитьЦитата
Размещено : 27.02.2022 11:59
Aveal
(@aveal)
Top level Admin

Привет, да, можно использовать функцию, поскольку она читает данные из регистра GPIOx->IDR, а регистр этот, в свою очередь, использует встроенный триггер Шмитта, который в режиме альтернативной функции не отключается. Но другая картина при настройке порта в режиме аналогового входа, в этом случае уже данные из регистра IDR использовать нельзя.

ОтветитьЦитата
Размещено : 27.02.2022 12:00
Aveal
(@aveal)
Top level Admin

@eduard одновременно ответили )

ОтветитьЦитата
Размещено : 27.02.2022 12:10
(@eduard)
Level 4 Moderator
От: @aveal

Привет, да, можно использовать функцию, поскольку она читает данные из регистра GPIOx->IDR, а регистр этот, в свою очередь, использует встроенный триггер Шмитта, который в режиме альтернативной функции не отключается. Но другая картина при настройке порта в режиме аналогового входа, в этом случае уже данные из регистра IDR использовать нельзя.

Я нашёл эту функцию в HAL. Защиты никакой. На самом деле просто читается IDR.
Просто ST любит защиту от дурака делать.

 

ОтветитьЦитата
Размещено : 27.02.2022 13:04
(@evgeniysol)
New member

@eduard @aveal спасибо за ответы!

ОтветитьЦитата
Создатель темы Размещено : 28.02.2022 12:29
Поделиться: