1. 确定LED连接的GPIO
根据电路图可知,两个LED灯,D1、D2分别通过GPE1、GPE2进行控制。
2 GPE1、GPE2相关的寄存器
a. GPECON 用于选择引脚功能,设置的值可能是以下几种:
b. GPEDAT 用于读、写引脚, GPE[4:0]对应每一个引脚
c. GPEPUD 控制相应引脚是否使用内部上下拉电阻,可能的值:
其余两个寄存器用于睡眠模式
1. 编码
思路:a. 设置GPECON使用GPE0、GPE1为Output模式
b. 设置GPEDAT为3
c. 正确应该显示为 LED全灭
代码:
.text
.global _start
_start:
LDR R0,=0x7F008080 @ R0设为GPECON寄存器。此寄存器
@ 用于选择端口E各引脚的功能:
@ 是输出、是输入、还是其他
MOV R1,#0x00000011 @ 设置GPE0、GPE1为输出口,
STR R1,[R0] @ GPE0[3:0]=1,GPE1[7:4]=1
LDR R0,=0x7F008084 @ R0设为GPEDAT寄存器
MOV R1,#3 @
STR R1,[R0] @ 设置GPEDAT 为3
MAIN_LOOP:
B MAIN_LOOP
编译:
arm-linux-gcc -g -c -o led_on.o led_on.S
arm-linux-ld -Ttext 0x0000000 -g led_on.o-o led_on_elf
arm-linux-objcopy -O binary -S led_on_elfled_on.bin
在同一目录生成led_on.bin
2. 写入SD卡
WinHex 打开SD卡和bin文件,将bin的内容粘贴到SD卡结尾向前偏移 23FF 处。
插入SD卡加电,设置为SD卡启动,两个LED灯亮,测试成功。