STM32 的 IO 口相比 51 而言要复杂得多所以使用起来也困难很多。STM32 的 IO口可以由软件配置成如下 8 种模式序号模式常用举例1上拉输入IPUInput pull-up按键2下拉输入IPDInput-pull-down按键3模拟输入AINAnalog InputADC、DAC4浮空输入IN_FLOATINGInput floating1、外部已有明确上/下拉电路时如I2C总线靠外部电阻上拉2、高速信号输入如UART RX、SPI MISO5推挽输出Out_PPOutput push-pull1、数字信号输出如 控制LED、继电器2、高速信号如UART TX、SPI MOSI3、高低电平明确切换的场景如PWM输出6开漏输出Out_ODOutput open-drain1、电平兼容如 3.3V与5V器件通信2、总线协议如I2C、单线总线3、多设备共享信号线“线与”逻辑7复用推挽功能AF_PPAlternate Function push-pull1、外设需要强驱动能力时如USART TX、SPI SCK2、定时器PWM输出驱动电机、LED3、高速信号如SDIO、FSMC8复用开漏功能AF_ODAlternate Function open-drain1、支持总线协议的外设如I2C SDA/SCL2、多主机通信如CAN总线3、需要电平转换的复用信号每个 IO 口可以自由编程但 IO 口寄存器必须要按 32 位字 被访问。STM32 的很多 IO 口都是5V 兼容的这些 IO 口在与 5V 电平的外设连接的时候很有优势I/O Level 标 FT 的就是 5V 电平兼容的。STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH2 个 32 位的 数据寄存器 IDR 和 ODR1 个 32 位的 置位/复位寄存器 BSRR1个 16 位的 复位寄存器 BRR1 个 32 位的 锁存寄存器 LCKR。要了解每个寄存器的详细使用方法参考《STM32 中文参考手册 V10》P105~P129。