/************************************
//2010年4月2日
//汽发宿舍
//唐爱明
//改编LED例程
************************************/
#include "DSP28x_Project.h"
/************************************
//函数声明
************************************/
void delay_loop(void);
void Gpio_select(void);
void BUZZER_select(void);
void KEY_select(void);
/************************************
// 软件延时函数
************************************/
void delay_loop()
{
short i,j;
for (i = 0; i < 500; i++)
{
for (j = 0; j < 100; j++);
}
}
/************************************
// KEY功能配置
************************************/
void KEY_select(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;
EDIS;
}
/************************************
// BUZZER功能配置
************************************/
void BUZZER_select(void)
{
InitEPwm4Gpio(); // 使能BUZZER所在GPIO6管脚
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm4Regs.TBPHS.half.TBPHS = 100;
EPwm4Regs.TBPRD = 0x1FFF;
EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm4Regs.CMPA.half.CMPA = 0x1FFF/2;
EPwm4Regs.AQCTLA.bit.PRD = AQ_SET;
EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
}
/************************************
// GPIO功能配置
************************************/
void Gpio_select(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
EDIS;
}
/************************************
//主函数
************************************/
void main(void)
{
InitSysCtrl();
Gpio_select();
BUZZER_select();
KEY_select();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
for(;;)
{
if(GpioDataRegs.GPADAT.bit.GPIO0 == 0)//按键1按下
{
GpioDataRegs.GPADAT.bit.GPIO1 = 0;//LED1点亮
GpioDataRegs.GPBDAT.bit.GPIO34 = 1;//LED2熄灭
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//蜂鸣器响
EDIS;
delay_loop();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//蜂鸣器关
EDIS;
}
else if(GpioDataRegs.GPADAT.bit.GPIO2 == 0)//按键2按下
{
GpioDataRegs.GPADAT.bit.GPIO1 = 1;//LED1熄灭
GpioDataRegs.GPBDAT.bit.GPIO34 = 0;//LED2点亮
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;//蜂鸣器响
EDIS;
delay_loop();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//蜂鸣器关
EDIS;
}
else //按键放开
{
GpioDataRegs.GPADAT.bit.GPIO1 = 1;//LED1熄灭
GpioDataRegs.GPBDAT.bit.GPIO34 = 1;//LED2熄灭
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//蜂鸣器关
EDIS;
}
}
}
文章评论(0条评论)
登录后参与讨论