GPIO的八种模式以及配置

    技术2022-07-10  116

    STM32的GPIO 有8种可能的配置:(4种输入+2种输出+2种复用输出) (1) 浮空输入 GPIO_Mode_IN_FLOATING (2) 带上拉输入 GPIO_Mode_IPU (3) 带下拉输入 GPIO_Mode_IPD (4) 模拟输入 GPIO_Mode_AIN

    (5) 开漏输出 GPIO_Mode_Out_OD (6) 开漏复用输出 GPIO_Mode_AF_OD (7) 推挽输出 GPIO_Mode_Out_PP (8) 推挽复用输出 GPIO_Mode_AF_PP

    1. 八种模式

    1.1. 浮空输入

    CPU可以随时读取IO口的电平状态,什么都不接,相当于高电平,很容易受干扰

    1.2. 带上拉输入

    ①CPU可以随时读取IO口的电平状态, ②减少干扰.通过在数据通道上部,接入上拉电阻和电源VDD,钳位在高电平!电阻同时起限流作用

    1.3. 带下拉输入

    ①CPU可以随时读取IO口的电平状态, ②减少干扰,通过在数据通道上部,接入下拉电阻和接地,钳位在低电平!电阻同时起限流作用

    1.4. 模拟输入

    前面三种都是数字信号输入,模拟输入与它们不同, 从IO口过来的模拟量要被ADC转换成数字量才能被CPU读取咯

    1.5. 开漏输出(只用作输出低电平)

    GPIO软件置0,且接地-------IO输出低电平

    GPIO软件置1,不接上拉------IO悬空 GPIO软件置1,接上拉------IO输出高电平

    CPU可以在"输入数据寄存器IDR"监控IO口的状态,因为IO口的信息反馈到CPU相当于输入CPU,所以是在"输入状态寄存器"查看

    1.6. 开漏复用输出

    GPIO口被用作第二功能时,比如用于片内外设功能(TX1,MOSI,MISO.SCK.SS)

    1.7. 推挽输出(既可以输出低电平,也可以高电平)

    GPIO软件置0,且接地-------IO输出低电平 GPIO软件置1,且接上拉------IO输出高电平

    1.8. 推挽复用输出

    GPIO口被用作第二功能时,比如用于片内外设功能(I2C的SCL,SDA)

    2. GPIO的配置

    模式的配置介绍: 一个IO口需要4个bit来控制: CNF MODE CNF MODE 00 00 ~ 11 11 也就是十六进制的 0x 0 ~ 0x F

    其中MODE是设置输入输出模式:: 00:输入(复位后的状态) 01:输出,最大速度10MHz 10:输出,最大速度2MHz 11:输出,最大速度50MHz

    而CNF是在MODE的基础上选择更细分的模式: (1)当MODE为00,即输入模式下: 00:模拟输入 01:浮空输入 10:上拉/下拉输入 11:保留 (2)当MODE为01,10,11,即输出模式时: 00:推挽输出 01:开漏输出 10:复用推挽输出 11:复用开漏输出

    3.软件配置的写法

    端口配置寄存器(2个32位的寄存器):CRH,CRL 作用: 配置输入输出模式 按照每四个bit位,为1个IO口

    CRH:负责8~15号IO端口 CRL:负责0~7号IO口

    //软件配置的写法: GPIOC->CRH &= 0xFFFFFFF0 //清除PC8的配置 GPIOC->CRH |= 0x00000008 //设置PC8为0x8,也就是bit的10 00,得出 上拉/下拉输入模式 //再通过 GPIO->ODR=1<<8 //得到上拉模式

    数据寄存器(2个32位的寄存器):IDR,ODR 作用: 配置输入输出模式 按照每四个bit位,为1个IO口

    IDR(端口输入数据寄存器,只读):只使用了低16位,读取IO口的输入状态,bit为1有输入,0无 ODR(端口输入数据寄存器,可写,不要读):只使用了低16位,bit写入1,IO口有输出,0则不输出

    置位/复位寄存器(1个32位的寄存器):BSRR

    复位寄存器(1个16位的寄存器):BRR

    锁存寄存器(1个32位的寄存器):LCKR

    Processed: 0.016, SQL: 9