原创 改编的一个例程,将LED、按键和蜂鸣器结合起来

2010-4-2 23:07 3021 5 5 分类: 处理器与DSP

/************************************
//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;
  }
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条