关于mini2440开关led问题

yankw 2015-03-19 12:29:07
//****led.c****//
#define GPBCON (*(volatile unsigned long*)0x56000010)
#define GPBDAT (*(volatile unsigned long*)0x56000014)

void delay(volatile unsigned long time)
{
for (;time>0;time--);

return;
}

int main()
{
GPBCON = GPBCON & (~(3<<10)) & (~(3<<12)) & (~(3<<14)) & (~(3<<16));
GPBCON = GPBCON | (1<<10) | (1<<12) | (1<<14) | (1<<16);

GPBDAT = GPBDAT | (0xf<<5);
GPBDAT = GPBDAT & (~(1<<5));.text
delay(10000);
GPBDAT = GPBDAT | (1<<5);

return 0;
}

//*****led.S*****//
.global _start
_start:
//close watchDog
LDR R0,=0x53000000
MOV R1,#0
STR R1,[R0]

LDR SP,=4096
BL main
loop:
b loop

//*****Makefile*****//
led.bin: led.S led.c
arm-linux-gcc -g -c -o led.o led.S
arm-linux-gcc -g -c -o led_on.o led.c
arm-linux-ld -Ttext 0x00000000 -g led_on.o led.o -o led_elf
arm-linux-objcopy -O binary -S led_elf led.bin

clean:
rm -f led.bin final *.o led_elf

LED本来应该亮一会儿,然后就熄灭;但是结果是灯会一直亮着 , 奇怪的是注释掉delay函数后灯一直不亮。
顺便问下,keil下面选了具体芯片然后生成的.bin和arm-linux-gcc交叉编译后生成的.bin有什么区别?
...全文
576 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangsh1988 2017-03-06
  • 打赏
  • 举报
回复
你好,问题解决了吗?我刚刚买了板子,但是出现了同样的程序下载到NAND中就能正常运行,但是用MiniTools选择download and run,把程序直接下载到RAM中,就会出现LED灯常亮的情况。
yankw 2015-03-24
  • 打赏
  • 举报
回复
是我板子的问题么? 不注释delay会一直亮,按理应该会灭的呀。
doyoumissme3016 2015-03-22
  • 打赏
  • 举报
回复
代码看不出问题来,在我这运行也正常,亮了一下然后灭的。 注释掉Delay之后两条指令(亮-〉灭)的时间间隔太短,就算灯亮过你也看不出来的

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧