Доброго времени суток, у меня вопрос по портам ввода-вывода GPIO. Можно ли читать состояние вывода через HAL_GPIO_ReadPin(), когда этот вывод используется другой периферией (USART, таймер и т.д.), то есть вывод настроен на режим альтернативной функции?
Надеюсь, что понятно объяснил свои мысли.
Если посмотреть схему порта, то можно увидеть, что состояние пина читается через входной регистр данных, который стоит после триггера Шмитта.
Альтернативная функция идёт через отвод до этого регистра и связь неразрываемая.
Скорее должно получится.
Хорошо, что задали этот вопрос. Если всё работает так как предполагается. Можно будет строить более сложные взаимодействия с GPIO.
Лишь бы HAL не порезал эту возможность. Если через него не получится, можно попробовать считать регистр напрямую.
Единственное что вы сможете считать, только то что альтернативная функция будет пихать на вывод или читать с него.
Привет, да, можно использовать функцию, поскольку она читает данные из регистра GPIOx->IDR, а регистр этот, в свою очередь, использует встроенный триггер Шмитта, который в режиме альтернативной функции не отключается. Но другая картина при настройке порта в режиме аналогового входа, в этом случае уже данные из регистра IDR использовать нельзя.
Привет, да, можно использовать функцию, поскольку она читает данные из регистра GPIOx->IDR, а регистр этот, в свою очередь, использует встроенный триггер Шмитта, который в режиме альтернативной функции не отключается. Но другая картина при настройке порта в режиме аналогового входа, в этом случае уже данные из регистра IDR использовать нельзя.
Я нашёл эту функцию в HAL. Защиты никакой. На самом деле просто читается IDR.
Просто ST любит защиту от дурака делать.