红联Linux门户
Linux帮助

按下按键,led亮(arm系列)

发布时间:2011-05-19 22:46:02来源:红联作者:txgc_wm
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是不会亮的。
在调试中遇到了这个问题,和大家一同分享!
文章评论

共有 0 条评论