TMS320F28335的GPIO

1 TMS320F28335 GPIO 介绍

1.1 GPIO 概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 GPIO 结构框图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 GPIO输入限定功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 GPIO 相关寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)GPxCTRL 寄存器

在这里插入图片描述

(2) GPIO置位寄存器(GPAQSEL)

在这里插入图片描述
在这里插入图片描述

(3) GPIO方向控制寄存器(GPxDIR)

在这里插入图片描述
在这里插入图片描述

(4)GPIO功能选择控制寄存器(GPXMUX1、GPXMUX2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)GPIO数据寄存器(GPXDAT)

在这里插入图片描述

(6)GPIO清零寄存器(GPxCLEAR)

在这里插入图片描述

(7)GPIO 电平翻转寄存器(GPxTOGGLE)

在这里插入图片描述

(8)GPIO上拉控制寄存器

在这里插入图片描述

1.5 GPIO配置步骤

在这里插入图片描述

2 实际应用

2.1 LED 实验

在这里插入图片描述

2.2 程序解析

在这里插入图片描述

#include "DSP2833x_Device.h"     // Headerfile Include File
#include "DSP2833x_Examples.h"   // Examples Include File
#include "LED.h"




void  LED_Init(void)
{
EALLOW;//关闭保护
//LED14 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO68=0; GpioCtrlRegs.GPCDIR.bit.GPIO68=1; GpioCtrlRegs.GPCPUD.bit.GPIO68=0;
//LED13 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO67=0; GpioCtrlRegs.GPCDIR.bit.GPIO67=1; GpioCtrlRegs.GPCPUD.bit.GPIO67=0;
//LED12 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO66=0; GpioCtrlRegs.GPCDIR.bit.GPIO66=1; GpioCtrlRegs.GPCPUD.bit.GPIO66=0;
//LED11 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO65=0; GpioCtrlRegs.GPCDIR.bit.GPIO65=1; GpioCtrlRegs.GPCPUD.bit.GPIO65=0;
//LED10 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO64=0; GpioCtrlRegs.GPCDIR.bit.GPIO64=1; GpioCtrlRegs.GPCPUD.bit.GPIO64=0;
//LED9端口配置
GpioCtrlRegs.GPBMUX2.bit.GPIO61=0; GpioCtrlRegs.GPBDIR.bit.GPIO61=1; GpioCtrlRegs.GPBPUD.bit.GPIO61=0;
//LED8 端口配置
GpioCtrlRegs.GPBMUX2.bit.GPIO60=0; GpioCtrlRegs.GPBDIR.bit.GPIO60=1; GpioCtrlRegs.GPBPUD.bit.GPIO60=0;
GpioDataRegs.GPCSET.bit.GPIO68=1;GpioDataRegs.GPCSET.bit.GPIO67=1; GpioDataRegs.GPCSET.bit.GPIO66=1; GpioDataRegs.GPCSET.bit.GPIO65=1; GpioDataRegs.GPCSET.bit.GPIO64=1; GpioDataRegs.GPBSET.bit.GPIO61=1; GpioDataRegs.GPBSET.bit.GPIO60=1;
EDIS;//开启寄存器保护
}
//延迟子函数
void delay()
{
    Uint32      i;
	Uint32      j;
	for(i=0;i<32;i++)
    for (j = 0; j < 100000; j++) {}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#ifndef APP_LED_H_
#define APP_LED_H_

#include  "DSP2833x_Device.h"	//  DSP2833x  头文件
#include  "DSP2833x_Examples.h"	//  DSP2833x  例子相关头文件

#define  LED14_OFF	(GpioDataRegs.GPCSET.bit.GPIO68=1)
#define  LED14_ON	(GpioDataRegs.GPCCLEAR.bit.GPIO68=1)
#define  LED14_TOGGLE	(GpioDataRegs.GPCTOGGLE.bit.GPIO68=1)

#define  LED13_OFF	(GpioDataRegs.GPCSET.bit.GPIO67=1)
#define  LED13_ON	(GpioDataRegs.GPCCLEAR.bit.GPIO67=1)
#define  LED13_TOGGLE	(GpioDataRegs.GPCTOGGLE.bit.GPIO67=1)

#define  LED12_OFF	(GpioDataRegs.GPCSET.bit.GPIO66=1)
#define  LED12_ON	(GpioDataRegs.GPCCLEAR.bit.GPIO66=1)
#define  LED12_TOGGLE	(GpioDataRegs.GPCTOGGLE.bit.GPIO66=1)

#define  LED11_OFF	(GpioDataRegs.GPCSET.bit.GPIO65=1)
#define  LED11_ON	(GpioDataRegs.GPCCLEAR.bit.GPIO65=1)
#define  LED11_TOGGLE	(GpioDataRegs.GPCTOGGLE.bit.GPIO65=1)



#define  LED10_OFF	(GpioDataRegs.GPCSET.bit.GPIO64=1)
#define  LED10_ON	(GpioDataRegs.GPCCLEAR.bit.GPIO64=1)
#define  LED10_TOGGLE	(GpioDataRegs.GPCTOGGLE.bit.GPIO64=1)



#define  LED9_OFF	(GpioDataRegs.GPBSET.bit.GPIO61=1)
#define  LED9_ON	(GpioDataRegs.GPBCLEAR.bit.GPIO61=1)
#define  LED9_TOGGLE	(GpioDataRegs.GPBTOGGLE.bit.GPIO61=1)


#define  LED8_OFF	(GpioDataRegs.GPBSET.bit.GPIO60=1)
#define  LED8_ON	(GpioDataRegs.GPBCLEAR.bit.GPIO60=1)
#define  LED8_TOGGLE	(GpioDataRegs.GPBTOGGLE.bit.GPIO60=1)


void  LED_Init(void);
void delay();


#endif /* APP_LED_H_ */

在这里插入图片描述
main 函数
要点亮 LED 指示灯,在 main 函数内需要先调用 LED 初始化函数,然后调用
LED1_ON 宏定义。如果要让 LED 闪烁,需要在 LED1_ON 和 LED1_OFF 语句或者直接使用 LED1_TOGGLE 宏加入一定的延时,这个时间只要保证肉眼能够观察到闪烁效果即可。

#include "DSP2833x_Device.h"     // DSP2833x 头文件
#include "DSP2833x_Examples.h"   // DSP2833x 例子相关头文件
#include "LED.h"

void main(void)
{
InitSysCtrl();//配置系统时钟150MHZ,配置看门狗,禁止看门狗
LED_Init();

while(1)
{
//	GpioDataRegs.GPBTOGGLE.bit.GPIO60=1;
	LED8_TOGGLE;
	delay();
}



}

主函数非常简单,首先调用 InitSysCtrl(),完成系统时钟配置和使能各外设时钟,包括 GPIO 时钟。然后调用 LED 初始化函数,将 GPIO68 引脚配置为普通 GPIO、输出方向、使能上拉。最后进入 while 循环内调用 LED14_TOGGLE 宏, 让 GPIO68 引脚输出状态间隔 delay 时间翻转一次,即高电平变低电平,低电平变高电平,从而实现点亮 LED 并使其闪烁。至于 delay 函数延时时间具体多少,自己可以设定查看,后面会教大家使用 TI 提供给我们的延时函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值