|
我通过资料确定TQ2440的按键和LED的GPIO如下:
led灯接口:
nLED1——GPB5
nLED2——GPB6
nLED3——GPB7
nLED4——GPB8
GPBCON——0x60000010
GPBDAT——0x56000014
GPBUP——0x56000018
按键接口
K1——GPF1
K2——GPF4
K3——GPF2
K4——GPF0
GPFCON——0x56000050
GPFDAT——0x56000054
GPFUP——0x56000058
请大家看看我的程序是否有错
ctr0.S文件
.text
.global _start
_start:
ldr r0,=0x53000000
mov r1,#0x0
str r1,[r0]
ldr sp,=1024 * 4
bl main
halt_loop:
b halt_loop
led_on.c文件
#include <stdio.h>
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
#define GPB5_out (1 << 5)
#define GPB6_out (1 << 6)
#define GPB7_out (1 << 7)
#define GPB8_out (1 << 8)
#define GPF0_in (1 << 0)
#define GPF1_in (1 << 1)
#define GPF2_in (1 << 2)
#define GPF4_in (1 << 4)
int main()
{
unsigned long key_data = 0xffffffff;
GPBCON = 0xfffd57ff;
GPFCON = 0x00000000;
GPBDAT = 0x00000000;
while(1)
{
key_data = GPFDAT;
if(key_data & GPF0_in)
{
GPBDAT &= ~GPB5_out;
}
else
{
GPBDAT |= GPB5_out;
}
if(key_data & GPF1_in)
{
GPBDAT &= ~GPB6_out;
}
else
{
GPBDAT |= GPB6_out;
}
if(key_data & GPF2_in)
{
GPBDAT &= ~GPB7_out;
}
else
{
GPBDAT |= GPB7_out;
}
if(key_data & GPF4_in)
{
GPBDAT &= ~GPB8_out;
}
else
{
GPBDAT |= GPB8_out;
}
//GPBDAT = led_data;
//GPFDAT = 0xffffffff;
}
return 0;
}
按键没反应,不能控制LED灯,恳求指教!! |
|