基本信息
文件名称:Texas Instruments 系列:TIVA C 系列 (基于 TM4C123)_(5).GPIO编程.docx
文件大小:22.94 KB
总页数:22 页
更新时间:2025-06-02
总字数:约1.04万字
文档摘要

PAGE1

PAGE1

GPIO编程

引言

GPIO(GeneralPurposeInputOutput,通用输入输出)是嵌入式系统中常用的功能模块之一。通过GPIO,可以实现对单片机外部设备的控制和状态检测。在TIVAC系列单片机中,GPIO模块提供了丰富的功能,包括数字输入、数字输出、中断触发等。本节将详细介绍如何在TM4C123单片机上进行GPIO编程,包括配置GPIO端口、设置引脚方向、读取和写入引脚状态,以及配置GPIO中断。

GPIO端口配置

端口选择

TM4C123单片机拥有多个GPIO端口,通常用A、B、C、D、E、F等字母表示。每个端口包含多个引脚,例如PORTA有8个引脚(PA0到PA7)。

端口时钟使能

在使用任何GPIO端口之前,必须首先使能该端口的时钟。时钟使能是通过GPIO模块的时钟控制寄存器(RCGCGPIO)来配置的。

代码示例

//使能PORTA的时钟

SYSCTL_RCGCGPIO_R|=SYSCTL_RCGCGPIO_R0;//RCGCGPIO寄存器位于SysCtl模块中

端口方向配置

GPIO端口的引脚可以配置为输入或输出。方向配置是通过GPIO方向寄存器(GPIODIR)来完成的。

代码示例

//配置PORTA的PA0为输出

GPIO_PORTA_DIR_R|=(10);//设置PA0为输出

//配置PORTA的PA1为输入

GPIO_PORTA_DIR_R=~(11);//设置PA1为输入

引脚使能

在配置引脚方向之后,还需要使能引脚。引脚使能是通过GPIO数字使能寄存器(GPIODEN)来完成的。

代码示例

//使能PORTA的PA0和PA1

GPIO_PORTA_DEN_R|=(10)|(11);//设置PA0和PA1为数字引脚

引脚初始状态配置

对于输出引脚,可以配置其初始状态。初始状态配置是通过GPIO数据寄存器(GPIODATA)来完成的。

代码示例

//设置PORTA的PA0初始状态为高电平

GPIO_PORTA_DATA_R|=(10);//设置PA0为高电平

//设置PORTA的PA1初始状态为低电平

GPIO_PORTA_DATA_R=~(11);//设置PA1为低电平

GPIO读写操作

读取引脚状态

读取引脚状态时,使用GPIO数据寄存器(GPIODATA)。

代码示例

//读取PORTA的PA1状态

uint32_tstatus=GPIO_PORTA_DATA_R(11);

if(status){

//PA1为高电平

}else{

//PA1为低电平

}

写入引脚状态

写入引脚状态时,同样使用GPIO数据寄存器(GPIODATA)。

代码示例

//设置PORTA的PA0为高电平

GPIO_PORTA_DATA_R|=(10);

//设置PORTA的PA0为低电平

GPIO_PORTA_DATA_R=~(10);

GPIO中断配置

中断使能

中断使能是通过GPIO中断使能寄存器(GPIOIM)来配置的。此外,还需要使能NVIC(NestedVectoredInterruptController)中的相应中断。

代码示例

//使能PORTA的PA1中断

GPIO_PORTA_IM_R|=(11);

//使能NVIC中的PORTA中断

NVIC_EN0_R|=NVIC_EN0_INT_GPIOA;

中断类型配置

GPIO中断可以配置为上升沿、下降沿或双边沿触发。配置中断类型是通过GPIO上升沿触发寄存器(GPIOIS)和GPIO边缘触发寄存器(GPIOIBE)来完成的。

代码示例

//配置PORTA的PA1为上升沿触发

GPIO_PORTA_IS_R=~(11);//设置为边沿触发

GPIO_PORTA_IBE_R=~(11);//设置为上升沿触发

GPIO_PORTA_IEV_R|=(11);

//配置PORTA的PA1为下降沿触发

GPIO_PORTA_IS_R=~(11);//设置为边沿触发

GPIO_PORTA_IBE_R=~(11);//设置为下降沿触发

GPIO_PORTA_IEV_R=~(11);

//配置PORTA的PA1为双边沿触发

GPIO_PORTA_IS_R=~(11);//设置为边沿触发

GPIO_PORTA_IBE_R|=(11);/