GPIO及基本打通原理

寵の児 提交于 2020-01-26 07:44:07

底层驱动

指如何通过程序直接干预硬件。

I/O接口

即输入/输出接口,是MCU与外界进行交互的重要桥梁,MCU与外界的数据交换都需要通过I/O接口实现。
实质是一种电子电路,由内部若干专用寄存器和逻辑控制电路构成。

通用IO(GPIO)

是I/O的基本形式。一般情况下,使用正逻辑,规定高电平状态对应数字信号"1",低电平状态对应数字信号“0”。
当引脚作为通用输入时,MCU可以通过端口寄存器获取引脚的状态,反之,当引脚作为输出时,MCU可以通过内部寄存器控制引脚的输出状态。

GPIO输入引脚连接方式

带上拉电阻的连接

通过一个电阻连接到电源(VCC),可以设置引脚初始电平为高电平。

带下拉电阻的连接

通过一个电阻连接到地(GND)上,可以设置引脚初始电平为低电平。

“悬空”连接

一般不使用。

GPIO输出引脚

通过MCU内部程序控制引脚输出为高电平或低电平。

在这里插入图片描述

输出引脚O1和O2采样不同方式驱动外部器件,不同驱动电路,电流要求不同,采样不同接法。
图中当O1引脚输出为低电平时,LED点亮。
当O2引脚输出为高电平时,三极管导通,蜂鸣器响。

KL25芯片

大部分引脚具有复用功能,可以通过编程控制端口控制模块提供的寄存器为其制定某一具体功能。
KL25芯片有5个端口A~E。每个端口有32个引脚控制寄存器PORTx_PCRn(其中x=A~E,n=0~31)。
每一个寄存器都有独立的地址与之对应,对该地址读写就是对相应寄存器的读写。

在这里插入图片描述

D8~D10又叫做MUX(引脚复用控制位)。
当MUX=001时定义该引脚为GPIO引脚。通过GPIO模块寄存器进行编程。

KL25芯片(80引脚封装)

(GPIO)引脚分为5个端口,标志为A、B、C、D、E共61个引脚。
因封装不同,每个端口引脚个数不同。
端口引脚作为(GPIO)引脚时,逻辑1作为高电平,逻辑0作为低电平。

GPIO模块

每个(GPIO)口均有6个寄存器,5个GPIO口有30个寄存器。A B C D E各口的寄存器(数据输出寄存器)基地址为400F_F000h(40h+)。

在这里插入图片描述

GPIO基本编程步骤与基本打通程序

通过端口控制模块的引脚控制寄存器中的引脚复用控制字段(MU小)设定为GPIO功能,即令GPIO=0B001;

通过端口控制模块的引脚控制寄存器中通过GPIO模块相应口的“数据方向寄存器”来指定相应引脚为输入(GPIOx_PDDR=1)或输出(GPIOx_PDDR=0)功能。

若是输出引脚,则通过设置“数据输出寄存器”(GPIOx_PDOR)来指定相应引脚输出0或1,也可以通过其他三个寄存器改变引脚状态。若是输入引脚,则通过“数据输入寄存器”(GPIOx_PDIR)读取引脚数据。

编程实例

设PORTB口的19脚接一个发光二极管,低电平点亮,编程步骤为:

第一步:我计算所需寄存器的地址

在这里插入图片描述

第二步:设置PORTB的第19引脚为GPIO

在这里插入图片描述

第三步:设置引脚为输出(干预一位不影响其他位输出)

在这里插入图片描述

第四步:改变引脚状态

在这里插入图片描述嵌入式技术基础与实践(第4版)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!