一、 输入模式 (上拉/下拉/浮空)
在输入模式时,施密特触发器打开,输出被禁止。数据寄存器每隔 1 个 AHB1 时钟周期更新一次,可通过输入数据寄存器 GPIOx_IDR 读取 I/O 状态。其中 AHB1 的时钟如按默认配置一般为168MHz。用于输入模式时,可设置为上拉、下拉或浮空模式。
二、输出模式 (推挽/开漏,上拉/下拉)
在输出模式中,输出使能,推挽模式时双 MOS 管以方式工作,输出数据寄存器 GPIOx_ODR 可控制 I/O 输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O 输出高阻态或低电平。输出速度可配置,有 2MHz25MHz50MHz100MHz 的选项。此处的输出速度即 I/O支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。此时施密特触发器是打开的,即输入可用,通过输入数据寄存器 GPIOx_IDR 可读取 I/O 的实际状态。用于输出模式时,可使用上拉、下拉模式或浮空模式。但此时由于输出模式时引脚电平会受到ODR 寄存器影响,而 ODR 寄存器对应引脚的位为 0,即引脚初始化后默认输出低电平,所以在这种情况下,上拉只起到小幅提高输出电流能力,但不会影响引脚的默认状态。
三、复用功能 (推挽/开漏,上拉/下拉)
复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。用于复用功能时,可使用上拉、下拉模式或浮空模式。同输出模式,在这种情况下,初始化后引脚默认输出低电平,上拉只起到小幅提高输出电流能力,但不会影响引脚的默认状态。
四、模拟输入输出
模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉也被禁止。其它外设通过模拟通道进行输入输出。
总结
通过对 GPIO 寄存器写入不同的参数,就可以改变 GPIO 的应用模式。在 GPIO 外设中,通过设置“模式寄存器 GPIOx_MODER”可配置 GPIO 的输入/输出/复用/模拟模式,“输出类型寄存器 GPIOx_OTYPER”配置推挽/开漏模式,配置“输出速度寄存器 GPIOx_OSPEEDR”可选
2/25/50/100MHz 输出速度,“上/下拉寄存器 GPIOx_PUPDR”可配置上拉/下拉/浮空模式。