1、在工程文件中app文件夹下新建leds子文件夹用于存放leds.c/leds.h文件(记得添加进头文件路径),在user/main.c编写主函数
2、leds.c代码
#include "leds.h"
void LED_Init(void)
{
EALLOW;//关闭写保护
//LED1 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO68=0;//设置为普通IO功能,如果是GPIO79以后的管脚由GPCMUX2控制
GpioCtrlRegs.GPCDIR.bit.GPIO68=1;//设置GPIO方向为输出
GpioCtrlRegs.GPCPUD.bit.GPIO68=0;//使能GPIO上拉电阻
//LED2 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO67=0;
GpioCtrlRegs.GPCDIR.bit.GPIO67=1;
GpioCtrlRegs.GPCPUD.bit.GPIO67=0;
//LED3 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO66=0;
GpioCtrlRegs.GPCDIR.bit.GPIO66=1;
GpioCtrlRegs.GPCPUD.bit.GPIO66=0;
//LED4 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO65=0;
GpioCtrlRegs.GPCDIR.bit.GPIO65=1;
GpioCtrlRegs.GPCPUD.bit.GPIO65=0;
//LED5 端口配置
GpioCtrlRegs.GPCMUX1.bit.GPIO64=0;
GpioCtrlRegs.GPCDIR.bit.GPIO64=1;
GpioCtrlRegs.GPCPUD.bit.GPIO64=0;
//LED6 端口配置
GpioCtrlRegs.GPAMUX1.bit.GPIO10=0;
GpioCtrlRegs.GPADIR.bit.GPIO10=1;
GpioCtrlRegs.GPAPUD.bit.GPIO10=0;
//LED7 端口配置
GpioCtrlRegs.GPAMUX1.bit.GPIO11=0;
GpioCtrlRegs.GPADIR.bit.GPIO11=1;
GpioCtrlRegs.GPAPUD.bit.GPIO11=0;
GpioDataRegs.GPCSET.bit.GPIO68=1;//初始时希望GPIO口输出高电平,使LED灯熄灭
GpioDataRegs.GPCSET.bit.GPIO67=1;
GpioDataRegs.GPCSET.bit.GPIO66=1;
GpioDataRegs.GPCSET.bit.GPIO65=1;
GpioDataRegs.GPCSET.bit.GPIO64=1;
GpioDataRegs.GPASET.bit.GPIO10=1;
GpioDataRegs.GPASET.bit.GPIO11=1;
EDIS;//开启写保护
}
3、leds.h代码
#ifndef _LEDS_H_//防止头文件被重复包含,避免引起编译错误
#define _LEDS_H_//防止头文件被重复包含,避免引起编译错误
#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件
#define LED1_OFF (GpioDataRegs.GPCSET.bit.GPIO68=1)
#define LED1_ON (GpioDataRegs.GPCCLEAR.bit.GPIO68=1)
#define LED1_TOGGLE (GpioDataRegs.GPCTOGGLE.bit.GPIO68=1)
#define LED2_OFF (GpioDataRegs.GPCSET.bit.GPIO67=1)
#define LED2_ON (GpioDataRegs.GPCCLEAR.bit.GPIO67=1)
#define LED2_TOGGLE (GpioDataRegs.GPCTOGGLE.bit.GPIO67=1)
#define LED3_OFF (GpioDataRegs.GPCSET.bit.GPIO66=1)
#define LED3_ON (GpioDataRegs.GPCCLEAR.bit.GPIO66=1)
#define LED3_TOGGLE (GpioDataRegs.GPCTOGGLE.bit.GPIO66=1)
#define LED4_OFF (GpioDataRegs.GPCSET.bit.GPIO65=1)
#define LED4_ON (GpioDataRegs.GPCCLEAR.bit.GPIO65=1)
#define LED4_TOGGLE (GpioDataRegs.GPCTOGGLE.bit.GPIO65=1)
#define LED5_OFF (GpioDataRegs.GPCSET.bit.GPIO64=1)
#define LED5_ON (GpioDataRegs.GPCCLEAR.bit.GPIO64=1)
#define LED5_TOGGLE (GpioDataRegs.GPCTOGGLE.bit.GPIO64=1)
#define LED6_OFF (GpioDataRegs.GPASET.bit.GPIO10=1)
#define LED6_ON (GpioDataRegs.GPACLEAR.bit.GPIO10=1)
#define LED6_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO10=1)
#define LED7_OFF (GpioDataRegs.GPASET.bit.GPIO11=1)
#define LED7_ON (GpioDataRegs.GPACLEAR.bit.GPIO11=1)
#define LED7_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO11=1)
void LED_Init(void);
#endif//防止头文件被重复包含,避免引起编译错误
4、main.c代码
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "leds.h"
//延时函数
void delay_1ms(Uint16 t)
{
while(t--)
{
DELAY_US(1000);
}
}
void main()
{
InitSysCtrl();//系统时钟配置和使能各外设时钟,包括GPIO 时钟
LED_Init();//调用LED 初始化函数,将GPIO68 引脚配置为普通GPIO、输出方向、使能上拉
//点灯
// while(1)
// {
// LED2_ON;
// delay_1ms(1000);
// }
//流水灯循环
for(;;)
{
LED1_ON;
delay_1ms(100);//延时100ms
LED1_OFF;
LED2_ON;
delay_1ms(100);
LED2_OFF;
LED3_ON;
delay_1ms(100);
LED3_OFF;
LED4_ON;
delay_1ms(100);
LED4_OFF;
LED5_ON;
delay_1ms(100);
LED5_OFF;
LED6_ON;
delay_1ms(100);
LED6_OFF;
LED7_ON;
delay_1ms(100);
LED7_OFF;
}
}