STM32F446学习笔记-GPIO结构与配置

本文是STM32F446的学习笔记,详细介绍了GPIO的结构,包括输入寄存、输出寄存、输出驱动和上下拉及保护。并提供配置GPIO的步骤,如输入、输出、复用功能和模拟配置。通过实验验证了上下拉配置对电平的影响,并实现了一个花样流水灯程序,加深了对GPIO结构的理解。
摘要由CSDN通过智能技术生成

本文是笔者自学STM32F446-Reference的学习笔记,参考手册下载:STM32官方资料库

实验部分使用Nucleo-144开发板。

一.GPIO结构

GPIO的结构其实并不复杂,这里将其分为四个部分进行分析:输入寄存,输出寄存,输出驱动,上下拉及保护,分别对应下图中“上、左下、中下和右”四块。

GPIO基础结构

1.1输入寄存

输入部分对应的主要是输入数据寄存器,在基本输入状态下该寄存器的值由外部设备改变,所以属于只读寄存器。

除此,该输入部分还有复用功能输入与模拟输入两种输入结构,此时不需读取输入数据寄存器。前一种输入结构的信号与基本输入同属数字信号,所以要经过施密特触发器,后者则不需要。

1.2输出寄存

输出部分主要有输出数据寄存器和置位/复位寄存器,前者可读可写,后者只可以写,读取则得不到正确值。

同样,输出部分也有复用功能输出和模拟输出两种。模拟信号输出不需要经过输出驱动模块,另两种输出模式都需要。

1.3输出驱动

这部分主要有两种控制型寄存器:输出速率寄存器,输出方式寄存器。前者很好理解,即对应I/O支持的高低电平最高切换频率;后者则分为推挽模式和开漏模式两种,是理解I/O口输出结构的关键点。

图中所示的两个场效应管同时工作属于推挽结构。在该结构中输入高电平时,上方的PMOS导通,下方的NMOS关闭,输出高电平;而输入低电平时,NMOS导通,PMOS关闭,输出低电平。当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式高很多。

上方的PMOS不工作属于开漏结构。仅考虑该结构,则当输入为低电平时,PMOS完全关闭,NMOS导通,输出接地为低电平;而输入为高电平时,PMOS和NMOS都关闭,引脚既不输出高电平也不输出低电平,为高阻态。所以为了正常使用必须外接上拉电阻替代PMOS,以输出高电平。

推挽模式是最常用的结构,因为它可以在高低电平间快速切换;开漏结构则用于一些特定场合,如需要“线与”和“输出指定高电平”的电路,这些功能是推挽结构没有的,而开漏结构之所以有此功能的原理在分析电路后自然可以得到,此处不赘述。开漏结构的缺点在于上升沿有较大延迟,这是因为上升沿是通过外接上拉无源电阻对负载充电的。

1.4上下拉及保护

该部分通过上拉/下拉寄存控制上、下拉电阻的开关,进而控制引脚默认状态的电压。设置上拉时引脚为高电平,设置下拉时引脚为低电平,设置“既不上拉也不下拉”模式时,引脚处于浮空状态,因此也称为浮空模式。
两个保护二极管用于防止引脚外部过高或过低的电压输入芯片导致芯片烧毁。

二.GPIO使用配置

无论管脚作为输入还是输出,需要配置的寄存器无外乎:MODER、OTYPER、OSPEEDR、PUPD、ODR、IDR、BSRR、AFRL等。

请配合“参考手册”或“详细介绍每一个寄存器的博客”食用。

当然,首先应指定管脚,接着才是配置管脚对应的寄存器。

2.1输入配置

MODER配置为00,此外仅将PUPDR按照需求配置即可。

2.2输出配置

MODER配置为01,OTYPER、OSPEEDR、PUPDR、ODR、BS

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值