GD32 《嵌入式 - RISC-V开发笔记》 第2章 初识GPIO流水灯

开发环境:
IDE:
开发板:-EVAL
MCU:
2.1 GPIO工作原理
熟悉单片机的朋友都知道,学习的第一个例程就是流水灯,要想实现流水灯,首先必须了解GPIO的工作原理 。GPIO的基本结构如下图所示 。
GD32 的 IO 口可以由软件配置成如下 8 种模式:
? 输入模式
? 浮空输入:浮空()就是逻辑器件的输入引脚即不接高电平,也不接低电平 。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平 。一般实际运用时,引脚不建议悬空,易受干扰 。通俗讲就是让管脚什么都不接,浮空着 。信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入 。配置成这个模式后,用电压变量引脚电压为1点几伏,这是个不确定值 。由于其输入阻抗比较大,一般把这种模式用于标准的通讯协议,比如IIC、USART的等 。该模式是GD32复位之后的默认模式 。
? 上拉输入:上拉就是把电位拉高,比如拉到Vcc 。上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,弱强只是上拉电阻的阻值不同,没有什么严格区分 。上拉输入就是信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平;
? 下拉输入:就是把电压拉低,拉到GND 。与上拉原理相似 。下拉输入就是信号进入芯片后加了一个下拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为低电平;
? 模拟输入:信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块 。模拟输入是指传统方式的输入,数字输入是输入PCM数字信号,即0、1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的 。比如传送给ADC模块,由ADC采集电压信号 。所以可以理解为模拟输入的信号是未经处理的信号,是原汁原味的信号 。
? 输出模式
? 开漏输出:一般用在电平不匹配的场合,如需要输出5V的高电平 。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行 。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内) 。
? 复用开漏输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用) 。端口必须配置成复用开漏功能输出模式 。
? 推挽式输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止 。高低电平由IC的电源决定 。推挽电路是两个参数相同的三极管或,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高 。输出既可以向负载灌电流,也可以从负载抽取电流 。推拉式输出级既提高电路的负载能力,又提高开关速度 。
? 推挽式复用输出
2.2 I/O复用和重映射 2.2.1 I/O复用
GD32 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的 。也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用 。当I/O端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止

GD32  《嵌入式 - RISC-V开发笔记》 第2章 初识GPIO流水灯

文章插图