STM32f103RCT6mini开发板关于GPIO口相关寄存器的基础介绍

本文章将从基础GPIO口,相关寄存器了解底层逻辑,学习小白,如有错漏,望大佬指正。


1-1 GPIO口基本结构图的详解

在刚开始学习STM32的过程中,相信大部分人和我一样认为STM32的IO口配置方式和51单片机的IO口配置方式大不相同。在51单片机中,只需要定义头文件就可以在.c文件中简单控制IO口,例如P1^2=1;P2^3=0就表示相应的IO口输出高低电平。但在STM32中,相应的GPIO口的配置就比较复杂了。先看图

在这张原理图中一共有四种输出方式,四种输入方式。在这里先介绍两种器件:

1 施密特触发器:将连续的模拟信号转化为0和1的数字信号,一般会设置两个阈值,高于上限阈值会输出高电平,低于下限阈值会输出低电平。

2 MOS管:在输出模式中,选择推挽输出时,双MOS管会轮流工作输出强高/低电平,当选择开楼输出时只有N-MOS管工作,输出低电平/高阻态。

输入方式

外部信号通过最右边的IO引脚到达1号节点,若电压大于3.3V,则电流流向VDD,防止电压过大导致电路损坏。若电压小于0V,则电流由VSS流向IO口,防止IO口从电路内部汲取电流。当电流在0V~3.3V,可以顺利流向节点2(在打开输入模式时,输出电路关闭,故电流不流过5节点)。若选择打开上面的开关则选择上拉输入模式,此时若流过节点2的电流为低电平,则自动拉高至高电平(也就是若输入信号0,则自动转化为信号1),高电平不受影响。若选择打开下面的开关则选择下拉输入模式,此时若流过节点2的电流为高电平,则自动拉低至低电平(也就是若输入信号1,则自动转化为信号0)。若上下开关都不打开则选择浮空输入,此时IO口的电平信号完全由外部输入决定,电平状态不确定,最终直接进入输入数据寄存器。

最后一种模拟输入在ADC数模转换中用的最多,当电平信号经过3节点时不流过施密特触发器(肖特基触发器)直接流入片上外设。


输出方式

在配置好BSRR寄存器(位设置清除寄存器)后电平信号进入ODR寄存器(输出数据寄存器)再经过反向器和MOS管进入IO口。

推挽输出当ODR输出高电平时,引脚输出高电平。当ODR输出低电平时,引脚输出低电平(此高低电平为强高低电平,具有较强的驱动作用)。

开漏输出当ODR输出高电平,引脚输出高阻态(也就是I2C通信的基本条件),当ODR输出低电平,引脚输出低电平。

复用推挽和复用开漏原理于上面的推挽输出和开漏输出基本一致,不同点在于复用推挽/开漏不再需要ODR寄存器,而是直接由外部设备直接控制反向器和MOS管。

下面是相应输入输出模式的总结:


下面介绍基本端口寄存器:

我们知道,正点原子STM32F103RCT6mini的GPIO口一共有四组(其他版本的寄存器有相应的中文手册,读者可以自行查看),它们分别是PA,PB,PC,PD。每组GPIO口有16个引脚,例如PA1,PA2,PA3......PA15。(其中对于mini的板子PD口只有PD1和PD2两个引脚)。而驱动相关的端口需要相应寄存器的配置:端口配置低寄存器(CRL)和端口配置高寄存器(CRH)。它们俩是用来控制某一组GPIO口的16个端口的。而每一个端口需要四位二进制数来选择相应的模式。例如:控制PA1口为输入模式中的浮空输入模式,则MODE0为00,CNF0为01,其他位默认为0。

观察下图我们可以看到,CRL寄存器和CRH寄存器分别有32位,而控制一组GPIO口需要64位,要实现对引脚的控制就需要将两个寄存器组合使用。

端口输入寄存器(IDR寄存器,英文全名为input data register)有32位,但高16位用不到,所以只用低16位,这些位由外部IO口输入数字信号。

且只能被读取而不能被设置。

端口输出寄存器(ODR寄存器,英文全名为output data register)可以写入数字信号,并且可以由BSRR寄存器单独设置/清除某一位的值。

以上就是基本寄存器的介绍,内容简陋,以后还会补充,未完待续......

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值