Ответ в теме: Программирование МК STM32



#19322
kvanton
Участник

Всем привет, начал недавно STM32 осваивать (до этого были pic12-18/arduino/raspberry) и столкнулся с интересной проблемой:

Настроил GPIO как Input Pull-Up но при считывании получаю 0.

Условия:
Несколько других также настроенных портов (Input Pull-Up) при этом посажены на землю (на один порт Output Open-Drain), а непосредственно перед считыванием переключаю другой порт Output Open-Drain Pull-Up с 1 на 0.
При этом, если поставить задержку (пробовал 1мс) после переключения OutPut и считыванием Input получаю — 1, как и должно быть. Порты по схеме ни как не связанны — пробовал вообще отключать input порт от схемы (матрица кнопок) ситуация не меняется.

Работаю с китайской платой на stm32f103c8t6 (ардуино подобная) и библиотекой LL. Скорость порта пробовал разную — результат один.

Сможет кто-то объяснить или хотя бы намекнуть (куда копать, что почитать) почему такой эффект возможен?
Во всяких даташитах/аппликейшн ноте вроде ни чего интересного, зацепила только аббревиатура SSO ( simultaneous switching output) в разделе Adapt GPIO speed (в AN на GPIO) — но понять глубину этой фразы и контекста с ходу не получилось (возможно из-за непонимания каких-то базовых моментов)

Хотя и проблема в принципе решена (задержка допустима) — но хотелось бы разобраться в причинах.

Буду благодарен любым вариантам, может что-то натолкнет на правильные мысли.