@***************
@file:head.s
@功能:点亮两个led灯
@***************
@下面三行为工业流程,固定写法
.text
.global _start
_start:
ldr r0,=0x56000010 @将r0设置为GPBCON寄存器,并装载GPBCON寄存器的地址
ldr r1,=0x15400@设置GPB5-8四个引脚为输出状态(CPU发出信号给GPB引脚)
str r1,[r0]@把寄存器中的数据r1写道内存中去
ldr r0,=0x56000014 @将r0设置为GPBDAT寄存器,并装载GPBDAT寄存器的地址
flash:
ldr r1,=0x180 @对GPBDAT寄存器的5-8位进行设置
str r1,[r0]@把寄存器中的数据r1写道内存中去,四个灯的状态两不亮
bl wait@跳转的同时保存下一条指令的地址给链接寄存器
ldr r1,=0x1e0 @对GPBDAT寄存器的5-8位进行设置
str r1,[r0]@把寄存器中的数据r1写道内存中去,四个灯的状态全不亮
bl wait
b flash
@下面一个循环(相当延时)
wait:
ldr r2,=0xfff0
loop:
subs r2,r2,#1
bne loop
mov pc,lr@利用链接寄存器跳回去
stop:
b stop
其实跟裸机是差不多的。也是要先设置LED的控制寄存器,上拉寄存器。然后通过控制它的状态寄存器来使灯亮灭。跟裸机 *** 作是一样的。只是在系统里面,分成了驱动和应用。驱动程序就是为了能让LED能够正常工作。而应用程序就是控制LED怎么亮发。比如循环亮啊。全亮,全灭之类的。这只是概念。真正 *** 作的话,还要看你用的是什么芯片,什么linux核。反正方法就是先写好驱动然后添加到你的内核里面,在通过应用去控制灯的状态。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)