LED灯点亮的案例
![LED灯的原理图](http://upload-images.jianshu.io/upload_images/5688965-0d6fe17e2d1b6ebf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
LED灯的原理图
有上图可以看出到,开发板上有三盏LED,分别通过LED1
、'LED2'和'LED4'四条线连接,从图上可以看出如果对于三盏LED来说,右侧如果为低电平,那么LED将可以被点亮
![2440连接LED灯的引脚](http://upload-images.jianshu.io/upload_images/5688965-db4dd3afa2f0a125.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2440连接LED灯的引脚
在开发板的原理图上可以搜索到,
LED1
、'LED2'和'LED4'三根线引入到了2440芯片,引脚分别为
EINT4/GPF4
、
EINT4/GPF5
、
EINT4/GPF6
。
那以上的原理图可以看出,如果将以上的三个引脚设置为输出引脚,并且输出低电平,那么对应的LED将会被点亮。
如果需要将引脚设置为输出引脚并输出低电平,那么需要配置对应的寄存器,那么此时需要阅读2440芯片手册。
![2440芯片手册中关于对应引脚的设置](http://upload-images.jianshu.io/upload_images/5688965-d7e5d1b97c7a1bb1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2440芯片手册中关于对应引脚的设置
其中这三个引脚的输入输出属性,需要配置的是GPFCON
寄存器,他的地址为0x5600 0050
, 如果需要配置EINT4/GPF4
引脚为输出引脚,需要设置GPFCON
寄存器的9位和8位为0和1
。如果我们不管其他位,先设置其他位为0,那么9,8两位为10的情况下,对应的十六进制数为:0x0000 0100
。
![寄存器(16bit)设置内容计算]
![image.png](http://upload-images.jianshu.io/upload_images/5688965-b676f7e7c880f1c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
image.png
已经完成了配置为输出引脚,那么接下来需要配置输出的内容,可以通过GPFDAT
寄存器,他的地址为0x 5600 0054
,其中GPF7到GPF0
八个引脚,分别对应该寄存器的7到0位。那么以上就是关于如何点亮开发板上的LED灯的原理。
为了完成以上操作,可以先使用汇编语言,来讲寄存器进行设置。
.text
.global _start
_start:
LDR R0,=0x56000050 @R0设置为GPFCON寄存器。此寄存器用于选择端口B各引脚的功能:是输出、输入或者其他
MOV R1,#0x00000100 @设置R1=0x00000100
STR R1,[R0] @R0中放入R1. 设置GPF4为输出引脚,为[9:8]=0b01
@以上完成了GPFCON寄存器的设置,此时GPF4为输出引脚
LDR R0,=0x56000054 @R0设为GPBDAT寄存器,此寄存器用于读取/写入端口B各引脚的数据
MOV R1,#0x00000000 @R1改为0x00000000
STR R1,[R0] @R0中,放入R1。GPF4输出0,LED1点亮
@此时设置GPFDAT0x00000000,然后为0x00000100
MAIN_LOOP:
B MAIN_LOOP
Makefile文件
led_on.bin : led_on.s
arm-linux-gcc -g -c led_on.S -o led_on.o #编译不链接
arm-linux-ld -Ttext 0x00000000 -g led_on.o -o led_on_elf #链接
arm-linux-objcopy -O binary -S led_on_elf led_on.bin #转换为二进制文件,也会将生成的二进制文件烧写到开发板
clean:
rm -f led_on.bin led_on_elf *.o
执行make命令后,生成的文件结果
![make的过程](http://upload-images.jianshu.io/upload_images/5688965-c8e9886c5fc1a38f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
make的过程
再来看看Makefile
arm-linux-gcc -g -c led_on.S -o led_on.o
:汇编不链接
-
-g
:表示调试信息,不