第一步:编写LED灯、按键、蜂鸣器的驱动函数
/******************************************************************
函数名:void InitKEY(void)
参数:无
返回值:无
作用:配置GPIO27为输入模式,上拉禁止
******************************************************************/
void InitKEY(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO27 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO27 = 1;
EDIS;
}
/******************************************************************
函数名:void InitLED(void)
参数:无
返回值:无
作用:配置GPIO41、GPIO43、GPIO34为输出模式
******************************************************************/
void InitLED(void)
{
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0; //普通IO,对应D400,LED灯
GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1; //输出
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; //普通IO,对应D401,LED灯
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; //输出
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 0; //普通IO,对应D402,LED灯
GpioCtrlRegs.GPBDIR.bit.GPIO43 = 1; //输出IO
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //普通IO,对应蜂鸣器
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; //输出IO
EDIS;
}
第二步:主函数调用驱动函数并实现一个LED的闪烁,按键按下,蜂鸣器响,LED亮,弹起蜂鸣器关闭,LED灭
int main(void)
{
//int temp, in;
//volatile unsigned int i;
//DisableDog();
EALLOW;
P_SysCtrlRegs->INTOSC1TRIM.bit.FINETRIM = 0;
P_SysCtrlRegs->INTOSC2TRIM.bit.FINETRIM = 0;
EDIS;
InitSysCtrl(); //将PLL配置成10倍频1分频,配置系统时钟为120M
DINT;
int i = 0;
InitPieCtrl(); //初始化PIE 控制寄存器
IER_DISABLE(0xffff);
IFR_DISABLE(0xffff);
InitPieVectTable();
//PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
InitKEY();
InitLED();
GpioDataRegs.GPBSET.bit.GPIO41 = 1;
//Disable CPU interrupts and clear all CPU interrupt flags:
while(1){
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
GpioDataRegs.GPBTOGGLE.bit.GPIO43 = 1;
for(i = 0;i<1000;i++)
{
for(j = 0;j < 1000;j++)
{}
}
if(GpioDataRegs.GPADAT.bit.GPIO27 == 0)
{
GpioDataRegs.GPBCLEAR.bit.GPIO41 = 1;
GpioDataRegs.GPASET.bit.GPIO6 = 1;
}
else
{
GpioDataRegs.GPBSET.bit.GPIO41 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;
}
}
return 0;
}