STM32GPIO原理

本文介绍了STM32GPIO的基本结构、工作模式,包括浮空输入、上下拉输入、模拟输入以及开漏和推挽输出模式。还提及了GPIO的相关寄存器配置,如配置寄存器、数据寄存器、位设置/清除寄存器等,并简单讨论了端口复用功能和端口重映射的概念。
摘要由CSDN通过智能技术生成

参考资料:STM32库函数/不完全手册开发指南跑马灯实验、STM32中文参考手册第八章通用和复用功能IO。

  1. STM32ZET6引脚说明

STM32F103ZET5共7组IO               GPIOA~GPIOG

每组IO又有16个IO                        GPIOA.0~GPIO15

共16X7=112个IO             144

  1. STM32F103RCT6

STM32F10RCT6共4组IO                GPIOA~GPIOD

每组IO还是有16个IO                     GPIOA.0~GPIO15

共16X3+3=51个IO          64

  1. GPIO基本结构

复用功能

补充说明:有FT标识的为5V,3.3V均支持

              内部结构图

  1. GPIO工作方式

四种输入模式[A1] 

四种输出模式[A2] 

  • 输入浮空模式

电平(0/1)通过①到IO口上面,两个二极管只是保护作用,并无其它用途,通过开关,此时开关不会打开,0/1经过施密特触发器,施密特触发器是由肖特基二极管构成(导通电压小,电压降小,导通截止时间短),这个0/1经过输入数据寄存器直接给到单片机引脚。

  •  输入上拉模式[A3] 

 

电平(0/1)通过①到IO口上面,两个二极管只是保护作用,并无其它用途,通过开关,此时开关会打开(上拉电阻为30~50K),0/1经过施密特触发器,施密特触发器是由肖特基二极管构成(导通电压小,电压降小,导通截止时间短),这个0/1经过输入数据寄存器直接给到单片机引脚。

  • 输入下拉模式[A4] 

电平(0/1)通过①到IO口上面,两个二极管只是保护作用,并无其它用途,通过开关,此时开关会打开(上拉电阻为30~50K),0/1经过施密特触发器,施密特触发器是由肖特基二极管构成(导通电压小,电压降小,导通截止时间短),这个0/1经过输入数据寄存器直接给到单片机引脚。

  • 模拟输入

模拟量输入,上拉下拉无效,即为开关断开,然后通过模拟输入端口到MCU。

  • 开漏输出模式

高电平经过位设置清除寄存器,然后映射到输出寄存器(ODR)上,然后到输出控制电路,如果是高电平,NMOS管处于关闭,这个时候输出电平由外部上拉或者是下拉电阻决定,类似处于浮空状态。在开漏输出模式下,MCU还可以读取IO端口的电平。如果是低电平,NMOS管导通,这个时候输出电平是低电平,CPU读取的值就是低电平。

  • 开漏复用功能模式

高电平经过复用功能输出,然后到输出控制电路,如果是高电平,NMOS管处于关闭,这个时候输出电平由外部上拉或者是下拉电阻决定,类似处于浮空状态。在开漏输出模式下,MCU还可以读取IO端口的电平。如果是低电平,NMOS管导通,这个时候输出电平是低电平,CPU读取的值就是低电平。

  • 推挽输出模式

高电平经过位设置清除寄存器,然后映射到输出寄存器(ODR)上,然后到输出控制电路,如果是高电平,PMOS导通,NMOS截止,IO口即为高电平,如果是低电平,NMOS管导通,PMOS截止,IO口即为低电平。这样的输出是强高电平或者是强低电平。CUP还是可以读取IO口的高低电平。

  • 推挽复用输出模式

高电平经过位复用功能输出,然后到输出控制电路,如果是高电平,PMOS导通,NMOS截止,IO口即为高电平,如果是低电平,NMOS管导通,PMOS截止,IO口即为低电平。这样的输出是强高电平或者是强低电平。CUP还是可以读取IO口的高低电平。

注意:开漏输出只能输出强低电平,不能输出强高电平,而推挽输出可以输出强高低电平。

  1. GPIO相关寄存器配置

两个32位配置寄存器          (GPIOx_CLR,GPIOx_CRH)

两个32位数据寄存器          (GPIOx_IDR和GPIOx_ODR)

一个32位置位/复位寄存器(GPIOx_BSRR)

一个16位复位锁存器          (GPIOx_BRR)

一个32位锁定寄存器          (GPIOx_LCKR)

注意:每个I/O端口位可以允许自由编程,然而I/O端口寄存器必须按照32位字节访问,不能半字节或者是字节访问。

端口配置低寄存器(GPIOx_CRL)[A5] 

② 端口配置高寄存器(GPIOx_CRH)[A6] 

③ 端口输入数据寄存器(GPIO_IDR)[A7] 

注意:输出模式下也可使用!!!

端口输出数据寄存器(GPIO_ODR)[A8] 

⑤ 端口位设置/清除寄存器(GPIOx_BSRR)[A9] 

⑥ 端口位清除寄存器(GPIOx_BRR)[A10] 

更多的寄存器配置在STM32中文参考手册里面有,这里不详细讲解。

端口复用功能不做更多讲解,数据手册会详细讲解。

  1. 端口重映射

端口重映射是指某些端口可以复用到其它IO口,比如串口1默认是PA9,PA10可以通过配置重映射到PB6,PB7。用途是方便布线(数据手册里面有)

注意:STM32单片机所有IO口都可以实现中断


 [A1]输入浮空

输入上拉

输入下拉

模拟输入

 [A2]开漏输出

开漏复用功能输出

推挽式输出

推挽式复用功能

 [A3]强高

 [A4]强低

 [A5]Px0~Px7

 [A6]Px8~Px15

 [A7]IDR寄存器低16位,每个位控制一组IO的一个IO口,对应的是IO口输入电平。

 [A8]ODR寄存器低16位,每个位控制一组IO的一个IO口,对应的是IO口输出电平。

 [A9]BSRR寄存器低16位,对应位设置为1,那么IO口输出为高电平,对应为0,则不会产生任何影响。高16位作用相反。

 [A10]与GPIOx_BSRR低16位相同,所以实际使用中很少使用这个寄存器,实现不了功能在用GPIOx_BRR寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值