本帖最后由 jj809323 于 2014-5-21 18:21 编辑

我主要想实现的是四个LED灯闪烁,用c和汇编混合编程!
这是汇编代码:#启动代码
.globl _start
_start:
#设置CPU,将外设地址告诉CPU
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4  
#关看门狗   
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
#设置栈
ldr sp, =0xc002000
#调用c函数
bl main

halt:
        b halt

这是c程序代码:
int delay();
int main()
{
        
        
        volatile unsigned long * gpkcon0 = (volatile unsigned long *)0x7F008800;
        volatile unsigned long * gpkdat = (volatile unsigned long *)0x7F008808;
        
        * gpkcon0 = 0x11110000;

        while(1)        
        {
                * gpkdat = 0;
                delay();
                * gpkdat = 0xf0;
        
        }
        return 0;
}

int delay()
{
        volatile unsigned long  i = 0x10000;
        while (i--);
        return 0;
}

这是makefile:
led.bin: start.o main.o
        arm-linux-ld -Ttext 0x50000000 -o led.elf $^
        arm-linux-objcopy -O binary led.elf led.bin
        arm-linux-objdump -D led.elf > led_elf.dis
%.o : %.S
        arm-linux-gcc -o $@ $< -c
%.o : %.c
        arm-linux-gcc -o $@ $< -c
clean:
        rm *.o *.elf *.bin *.dis  -rf

我的开发板四个LED灯接的是GPK 4,5,6,7,可是实验就过就是4个灯同时亮了就不熄灭了,我宿主机是fedora 14,交叉编译器是arm-linux-gcc 4.5.1

共收到 10 条回复
流星飒沓 · #2 · 2014-5-21 19:10:57  回复 支持 反对
* gpkdat = 0xf0;这句下面在加一句delay();就行了

点评

你是说延时短了?  详情 回复 发表于 2014-5-21 19:42
wangzi19933 · #3 · 2014-5-21 19:30:18  回复 支持 反对
问孙福康啊,他会帮你的

点评

他不知道啊,他搞硬件的啊  详情 回复 发表于 2014-5-21 19:43
jj809323 · #4 · 2014-5-21 19:42:23  回复 支持 反对
流星飒沓 发表于 2014-5-21 19:10
* gpkdat = 0xf0;这句下面在加一句delay();就行了

你是说延时短了?

点评

解决了,谢谢啊,能加你扣扣啊,一起学习啊! 我的扣扣:1164700447  详情 回复 发表于 2014-5-21 19:48
嗯,不加延时的话下一条指令就跳到LED打开了,熄灭时间太短根本看不到  详情 回复 发表于 2014-5-21 19:46
jj809323 · #5 · 2014-5-21 19:43:10  回复 支持 反对
wangzi19933 发表于 2014-5-21 19:30
问孙福康啊,他会帮你的

他不知道啊,他搞硬件的啊
流星飒沓 · #6 · 2014-5-21 19:46:11  回复 支持 反对
jj809323 发表于 2014-5-21 19:42
你是说延时短了?

嗯,不加延时的话下一条指令就跳到LED打开了,熄灭时间太短根本看不到
jj809323 · #7 · 2014-5-21 19:48:05  回复 支持 反对
jj809323 发表于 2014-5-21 19:42
你是说延时短了?

解决了,谢谢啊,能加你扣扣啊,一起学习啊!
我的扣扣:1164700447
zj220223 · #8 · 2014-5-21 20:07:36  回复 支持 反对
学弟好大牛~~
dashuai888 · #9 · 2014-5-22 10:29:46  回复
不懂帮顶
阎魔あい · #10 · 2014-5-22 22:06:08  回复 支持 反对
瞬间就呵呵了…………

点评

啥意思?是我的问题太水了吗?  详情 回复 发表于 2014-5-22 23:12
jj809323 · #11 · 2014-5-22 23:12:13  回复 支持 反对
阎魔あい 发表于 2014-5-22 22:06
瞬间就呵呵了…………

啥意思?是我的问题太水了吗?
回帖
B Color Image Link Quote Code Smilies
Command + Enter
快速回复 返回顶部 返回列表