|  | 
 
| 本帖最后由 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;
 }
 | 
 |