#define key_up GpioDataRegs.GPBDAT.bit.GPIO48
#define key_down GpioDataRegs.GPBDAT.bit.GPIO51
#define key_right GpioDataRegs.GPBDAT.bit.GPIO49
#define key_left GpioDataRegs.GPBDAT.bit.GPIO50
#define key_enter GpioDataRegs.GPBDAT.bit.GPIO52
#define key_exit GpioDataRegs.GPBDAT.bit.GPIO53
#define relay0 GpioDataRegs.GPBDAT.bit.GPIO55
#define relay1 GpioDataRegs.GPBDAT.bit.GPIO57
void key_init()
{
EALLOW;
// 用户根据需要可以使能内部上拉或禁止.
GpioCtrlRegs.GPBPUD.bit.GPIO48 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO49 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO50 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO51 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO52 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // LCD_RS使能上拉
/* 通过I/O功能选择寄存器配置通用I/O功能*/
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0; // GPIO模式
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // GPIO模式
/* 设置I/O口为输入引脚*/
// GpioCtrlRegs.GPADIR.all = 0xFFFF0000;
GpioCtrlRegs.GPBDIR.bit.GPIO48 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO50 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO51 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO52 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO55 = 1; // 输出模式
GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1; // 输出模式
//各个IO初值设定
GpioDataRegs.GPBDAT.bit.GPIO48 = 1;
GpioDataRegs.GPBDAT.bit.GPIO49 = 1;
GpioDataRegs.GPBDAT.bit.GPIO50 = 1;
GpioDataRegs.GPBDAT.bit.GPIO51 = 1;
GpioDataRegs.GPBDAT.bit.GPIO52 = 1;
GpioDataRegs.GPBDAT.bit.GPIO53 = 1;
GpioDataRegs.GPBDAT.bit.GPIO55 = 1; //继电器上电关断
GpioDataRegs.GPBDAT.bit.GPIO57 = 1;
}
void key_scan()
{
if(key_up==0)
{
LCD_write_command(0x80); //第一行数据指针地址
// show("KEY TEST UP ");
show("RELAY0 TEST OPEN");
relay0 = 0;
DELAY_US(30);
while(key_up==0);
}
if(key_down==0)
{
LCD_write_command(0x80); //第一行数据指针地址
// show("KEY TEST DOWN");
show("RELAY0 TEST CLOS");
relay0 = 1;DELAY_US(20);
while(key_down==0);
}
if(key_right==0)
{
LCD_write_command(0x80); //第一行数据指针地址
// show("KEY TEST RIGHT");
show("RELAY1 TEST CLOS");
relay1 = 1;DELAY_US(20);
while(key_right==0);
}
if(key_left==0)
{
LCD_write_command(0x80); //第一行数据指针地址
// show("KEY TEST LEFT");
show("RELAY1 TEST OPEN");
relay1 = 0;DELAY_US(20);
while(key_left==0);
}
if(key_enter==0)
{
LCD_write_command(0x80); //第一行数据指针地址
show("KEY TEST ENTER");
while(key_enter==0);
}
if(key_exit==0)
{
LCD_write_command(0x80); //第一行数据指针地址
show("KEY TEST EXIT");
while(key_exit==0);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
卡死在哪里,就找哪里的问题
嗯
while(key_up==0); 这个执行了?
程序卡死肯定是执行了死循环了吧。
一周热门 更多>