# stm32的io端口雙向設置問題,須將io端口模式配置為 open-drain mode
> 在io端口配置為輸出模式時,輸入通道上的施密特觸發器一直是打開的,所以讀取IDR是能檢測到端口電平的
> 排除 push-pull mode 模式的依據是,推挽輸出是強輸出電流模式,在此模式下的輸出通道上的推挽結構MOS管,屬於強上拉和強下拉的,這會影響讀取IDR時的值,強上拉意味着會將來自外部的低電平輸入強制置高,強下拉意味着會將來自外部的高電平輸入強制置低
> 在 open-drain mode 模式下,要讀取來自外部的輸入信號前,須將輸出端口設置為開漏結構,且輸出高電平信號(即NMOS不導通),該結構下io端口方能准確反映來自外部的輸入信號
> 在復用模式下,暫未嘗試,相信會有奇妙的發現