int key_led_test()
{
int brkcond=1;
unsigned long dwDat=0xff;
char quitchar;
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out ; // LED1-LED4对应的4根引脚设为输出
GPFCON = GPF4_in & GPF2_in & GPF1_in & GPF0_in ; // K1-K4对应的4根引脚设为输入
while(brkcond)
{
dwDat = GPFDAT; // 读取GPF管脚电平状态
if (dwDat & (1<<4)) // K2没有按下
GPBDAT |= (1<<6); // LED1熄灭
else
GPBDAT &= ~(1<<6); // LED1点亮
if (dwDat & (1<<2)) // K3没有按下
GPBDAT |= (1<<7); // LED2熄灭
else
GPBDAT &= ~(1<<7); // LED2点亮
if (dwDat & (1<<1)) // K1没有按下
GPBDAT |= (1<<5); // LED3熄灭
else
GPBDAT &= ~(1<<5); // LED3点亮
if (dwDat & (1<<0)) // K4没有按下
GPBDAT |= (1<<8); // LED4熄灭
else
GPBDAT &= ~(1<<8); // LED4点亮
//if((quitchar=get_c())==0x1b) //此处调用get_c会使程序阻塞
//brkcond=0;
}
}
在此程序中如果试图调用串口的get_c去获取用户是否按下‘Esc’键,则会使程序进入阻塞。所以这里要退出该程序,需要采取其它的方法。
如果加上mark掉的部分,按下按键,平台的led是不会亮的。
在调试中遇到了这个问题,和大家一同分享!