tq2440,GPB8口的用途
刚开始学习ARM,编了一个挺简单的键盘控制LED的程序,可是发现LED4无论按键与否。总是亮着,求高手指导,代码如下#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
/*
* LED
*/
#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))
#define GPB5_msk (3<<(5*2))
#define GPB6_msk (3<<(6*2))
#define GPB7_msk (3<<(7*2))
#define GPB8_msk (3<<(8*2))
/*
*Key
*/
#define GPF0_in (0<<(0*2))
#define GPF1_in (0<<(1*2))
#define GPF2_in (0<<(2*2))
#define GPF4_in (0<<(4*2))
#define GPF0_msk (3<<(0*2))
#define GPF1_msk (3<<(1*2))
#define GPF2_msk (3<<(2*2))
#define GPF4_msk (3<<(4*2))
int main()
{
unsigned long dwDat;
GPBCON &= ~(GPB5_msk | GPB6_msk | GPB7_msk | GPB8_msk); //清零
GPBCON |= GPB5_out | GPB6_out | GPB7_out| GPB8_out;//设置输出
GPFCON &= ~(GPF0_msk | GPF1_msk | GPF2_msk | GPF4_msk);
GPFCON |= GPF0_in | GPF1_in | GPF2_in | GPF4_in;
while(1){
dwDat = GPFDAT;
if (dwDat & (1<<1))
GPBDAT |= (1<<5);
else
GPBDAT &= ~(1<<5);
if (dwDat & (1<<4))
GPBDAT |= (1<<6);
else
GPBDAT &= ~(1<<6);
if (dwDat & (1<<2))
GPBDAT |= (1<<7);
else
GPBDAT &= ~(1<<7);
if (dwDat & (1<<0))
GPBDAT |= (1<<8);
else
GPBDAT &= ~(1<<8);
}
return 0;
}
你把LED换个按键控制看是否正常,如果正常了,那就可能是那个键有问题,如果还是不正常那就灯有问题 应该是LED灯的问题吧,我把 if (dwDat & (1<<0))
GPBDAT |= (1<<8);
else
GPBDAT &= ~(1<<8);去掉之后,LED灯还是亮着
页:
[1]