|
本帖最后由 582611388 于 2009-5-27 14:34 编辑
我用的是TQ2440的板子,在LINUX下生成.bin文件,然后用SJF2440烧写到NAND里直接执行
下面的MyLED1执行就正确,而MyLED2就不行,通电后,MyLED1让小灯亮起来了,而MyLED2在通电后没有任何反应,一个灯也没亮,我只是加了一个delay函数而已,而且这个delay我还没调用,这是为什么呢?我刚接触ARM,有51的基础。谢谢!
程序如下:
crt0.S
.text
.global _start
_start:
ldr sp, =1024*4
bl main
halt_loop:
b halt_loop
MyLED1.c
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))
int main(void) {
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;
GPBDAT = ~(1<<5);
return 0;
}
MyLED2.c
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))
void delay(unsigned long n) {
for (;n>0;n--);
}
int main(void) {
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;
GPBDAT = ~(1<<5);
return 0;
} |
|