二十八.点亮LED

1.led通常作为一种调试手段

2.GPIO:通用输入输出口
常有三个寄存器控制

3.不同平台的GPIO控制寄存器地址不同,工作模式不同,相应的控制寄存器的布局也不同,有的甚至一组GPIO要两个寄存器控制。

4.对于6410还要注意在uboot中对外设进行地址初始化
(1)将基地址存入r0,

(2)设置大小,即偏移量,将基地址加上偏移量就得到映射地址(orr指令)

(3)将映射地址写入协处理器cp15的c15

(4)思考:为什么大小(偏移量)256MB(从0x70000000到0x7FFFFFFF,共256MB)

5.流程:
(1)设置工作模式为输出

(2)设置数据寄存器,决定哪盏灯点亮

6. 210用了NPN三极管,故GPIO接基极时应该输出高电平,集电极才会输出低电平,才能点亮LED。而且uboot还要利用店等程序来调试找bug.
发现210的关闭MMU和2440.6410不一样,使cache数据失效的参数不一样,且最好把Icache也关闭。注意加头。。。。。。。

7.代码实现
@点亮LED
#define GPKCON0 0x7F008800
#define GPKDAT  0x7F008808
light_led:	
	@设置GPKCON0
	ldr r1, =GPKCON0 					
	ldr r0, =0x11110000																  
	str r0, [r1]
	
	
	@设置GPKDAT点亮4颗LED
	ldr r0, =GPKDAT
	ldr r1, =0xa0
	str r1, [r0]
	
	mov pc, lr
	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值