1.GPIO介绍 GPIO 是控制或者采集外部器件的信息的外设,即负责输入输出。它按组分配,每组 16 个 IO 口,组数视芯片而定。STM32F103ZET6 芯片是 144 脚的芯片,具有 GPIOA、GPIOB、GPIOC、 GPIOD、GPIOE、GPIOF 和 GPIOG 七组 GPIO 口,共有 112 个 IO 口可供我们编程使用 2.GPIO八种功能模式
2.1、输入浮空 输入浮空模式:上拉/下拉电阻为断开状态,施密特触发器打开,输出被禁止。输入浮空模 式下,IO口的电平完全是由外部电路决定。如果IO引脚没有连接其他的设备,那么检测其输 入电平是不确定的。该模式可以用于按键检测等场景。2.2、输入上拉 输入上拉模式:上拉电阻导通,施密特触发器打开,输出被禁止。在需要外部上拉电阻的 时候,可以使用内部上拉电阻,这样可以节省一个外部电阻,但是内部上拉电阻的阻值较大, 所以只是“弱上拉”,不适合做电流型驱动。
2.3、输入下拉 输入下拉模式:下拉电阻导通,施密特触发器打开,输出被禁止。在需要外部下拉电阻的 时候,可以使用内部下拉电阻,这样可以节省一个外部电阻,但是内部下拉电阻的阻值较大, 所以不适合做电流型驱动。
2.4、模拟输入 模拟功能:上下拉电阻断开,施密特触发器关闭,双MOS管也关闭。其他外设可以通过模 拟通道输入输出。该模式下需要用到芯片内部的模拟电路单元单元,用于ADC、DAC、MCO 这类操作模拟信号的外设。
2.5、开漏输出 开漏输出模式:STM32的开漏输出模式是数字电路输出的一种,从结果上看它只能输出低 电平Vss或者高阻态,常用于IIC通讯(IIC_SDA)或其它需要进行电平转换的场景。 开漏模式下,IO是这样工作的: P-MOS被“输出控制”控制在截止状态,因此IO的状态取决于N-MOS的导通状况; 只有N-MOS还受控制于输出寄存器,“输出控制”对输入信号进行了逻辑非的操作; 施密特触发器是工作的,即可以输入,且上下拉电阻都断开了,可以看成浮空输入;
2.6、推挽输出 推挽输出模式:STM32的推挽输出模式,从结果上看它会输出低电平VSS或者高电平 VDD。推挽输出跟开漏输出不同的是,推挽输出模式P-MOS管和N-MOS管都用上。
2.7、开漏式复用功能 开漏式复用功能:一个IO口可以是通用的IO口功能,还可以是其他外设的特殊功能引脚, 这就是IO口的复用功能。一个IO口可以是多个外设的功能引脚,我们需要选择作为其中一个 外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存 器。除了复用功能外,其他的结构分析请参考开漏输出模式。 另外在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取IO口的电平状 态,同时外设可以读取IO口的信息。
2.8、推挽式复用功能 推挽式复用功能:和开漏式复用功能类似,只是推挽式复用功能P-MOS和N-MOS都启用了
3.GPIO寄存器
STM32F1每组(这里是A~D)通用GPIO口有7个32位寄存器控制,包括: 2个32位端口配置寄存器(CRL和CRH) 2个32位端口数据寄存器(IDR和ODR) 1个32位端口置位/复位寄存器(BSRR) 1个16位端口复位寄存器(BRR) 1个32位端口锁定寄存器(LCKR) 3.1 端口配置寄存器 配置寄存器就是用来配置GPIO的相关工作模式和工作速度,它们通过不同的 配置组合方法,就决定我们所说的8种工作模式。 3.1.1 GPIOx_CRL寄存器 偏移地址:0x00 复位值:0x444444443.1.2 GPIOx_CRH寄存器
偏移地址:0x04 复位值:0x44444444
3.2 端口数据寄存器
3.2.1端口输出数据寄存器(GPIOx_ODR)
地址偏移:0Ch 复位值:0x00000000 端口输出数据寄存器用于控制GPIOx的输出高电平或者低电平。 该寄存器低16位有效,分别对应每一组GPIO的16个引脚。
3.2.2端口输入数据寄存器(GPIOx_IDR)
地址偏移:0x08 复位值:0x0000XXXX端口输出数据寄存器用于接收GPIOx的输入高电平或者低电平。
该寄存器低16位有效,分别对应每一组GPIO的16个引脚。3.3 端口位设置/清除寄存器(GPIOx_BSRR)
地址偏移:0x10 复位值:0x00000000
3.4 端口位复位寄存器(GPIOx_BRR)
地址偏移:0x14 复位值:0x0000 0000
3.5 端口配置锁定寄存器(GPIOx_LCKR)
当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁 定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了 LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。 每个锁定位锁定控制寄存器(CRL, CRH)中相应的4个位。 地址偏移:0x18 复位值:0x0000 0000
标签:输出,IO,电阻,端口,开发板,STM32F10,寄存器,GPIO From: https://www.cnblogs.com/navysummer-hardware/p/18132799