`
844604778
  • 浏览: 550992 次
文章分类
社区版块
存档分类
最新评论

TQ210裸机编程(2)——LED流水灯

 
阅读更多

两个文件start.S和led.c

start.S

.global _start @声明一个全局的标号
_start:
bl main @跳转到C函数去执行
halt:
b halt @死循环


led.c

#define GPC0CON *((volatile unsigned int *)0xE0200060)
#define GPC0DAT *((volatile unsigned int *)0xE0200064)

void delay(volatile unsigned int t)
{
volatile unsigned int t2 = 0xFFFF;
while (t--)
for (; t2; t2--);
}

int main()
{
int toggle = 0;
GPC0CON &= ~(0xFF << 12);
GPC0CON |= 0x11 << 12; // 配置GPC0_3和GPC0_4为输出

while (1)
{
GPC0DAT &= ~(0x3 << 3); // 熄灭LED1和LED2

if (toggle)
GPC0DAT |= 1 << 3; // 点亮LED1
else
GPC0DAT |= 1 << 4; // 点亮LED2

toggle = !toggle;
delay(0x50000);
}

return 0;
}


Makefile

led.bin: start.o led.o
arm-linux-ld -Ttext 0x20000000 -o led.elf $^
arm-linux-objcopy -O binary led.elf $@
arm-linux-objdump -D led.elf > led.dis

led.o : led.c
arm-linux-gcc -c $< -o $@
start.o : start.S
arm-linux-gcc -c $< -o $@

clean:
rm *.o *.elf *.bin *.dis


转载请注明来源:http://blog.csdn.net/zjhsucceed_329/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics