GPIO口的输入和输出

GPIO口的输入和输出_第1张图片

GPIO口的输入和输出_第2张图片

总结1:
(1) 浮空输入IN_FLOATING ——浮空输入,可以做KEY识别,RX1
(2)带上拉输入IPU——IO内部上拉电阻输入
(3)带下拉输入IPD—— IO内部下拉电阻输入
(4) 模拟输入AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出AF_PP ——片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

总结2
通常有5种方式使用某个引脚功能,它们的配置方式如下:

作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

  1. 注意
    注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
    stm32 复位后,IO 端口处于输入浮空状态.
    JTAG 引脚复位以后,处于上拉或者下拉状态
    所有 IO 端口都具有外部中断能力,端口必须配置成输入模式,才能使用外部中断功能
    对于复用功能输入,端口可以配置成任意输入模式或者复用功能输出模式.
    对于复用功能输出,端口必须配置成复用功能输出
    对于双向复用功能,端口必须配置成复用功能输出
    stm32 的部分 IO 端口的复用功能可以重新映射成另外的复用功能.
    stm32 具有GPIO 锁定机制,即锁定 GPIO 配置,下次复位前不能再修改.
    当 LSE 振荡器关闭时,OSC32_IN 和 OSC32_OUT可以用作通用 IO PC14 和 PC15.
    当进入待机模式或者备份域由 Vbat 供电,PC14,PC15 功能丢失,该两个 IO口线设置为模拟输入功能.
    OSC_IN 和 OSC_OUT 可以重新映射为 GPIO PD0,PD1.
    注意 PD0,PD1用于输出地时候仅能用于 50MHz 输出模式.
    注意:PC13,PC14,PC15 只能用于 2MHz 的输出模式,最多只能带30pf 的负载,并且同时只能使用一个引脚

    ♥※ STM32设置实例
    模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;

    读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;

    使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

如果是接上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入 _IPU和浮空输入_IN_FLOATING

和开漏输出_OUT_OD;

补充:GPIO相关配置寄存器
STM32F103ZET6一共有7组IO口,每组IO口有16个IO,每组IO口包含7个寄存器,一共可以控制一组GPIO的16个IO口。

GPIOx_CRL :端口配置低寄存器
GPIOx_CRH:端口配置高寄存器
GPIOx_IDR:端口输入寄存器
GPIOx_ODR:端口输出寄存器
GPIOx_BSRR:端口位设置/清除寄存器
GPIOx_BRR :端口位清除寄存器
GPIOx_LCKR:端口配置锁存寄存器
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)

你可能感兴趣的:(STM32,单片机,stm32,嵌入式硬件)