×
单片机 > 单片机程序设计 > 详情

ARM学习笔记13——LED驱动程序设计

发布时间:2020-08-26 发布时间:
|

首先我们要根据开发板原理图得到控制LED灯的引脚是哪个,我们现在以LED1为例,我们已经知道LED1由S5PV210的GPC1_3控制,因此我们按如下步骤进行:


第一步是配制S5PV210的GPC1_3为输出口;


第二步我们禁止GPC1_3的上、下拉电阻功能;


第三步就是控制GPC1_3输出高电平或低电平。  


要想对GPC1进行配置,那我们需要知道其配置寄存器的地址,根据S5PV210的编程手册我们可以知道:


GPC1的配置寄存器地址是:0xE0200080  


GPC1数据寄存器地址是:0xE0200084  


GPC1上、下拉控制寄存器地址是:0xE0200088


同样由S5PV210的编程手册得知,要将GPC1_3配置为输出口,只要将地址单元0xE0200080(配置寄存器)的BIT15设置为0001即可。


根据ARM体系结构的特点:运算编写在寄存器中完成,要想访问存储器必须用到加载ldr/str指令。要想操作地址单元0xE0200080(GPC1配置寄存器)的内容,必须将0xE0200080放到ARM寄存器(R0-Rn)中,然后用ldr/str指令访问该单元(GPC1配置寄存器)的内容。 那么,如何将0xE0200080放到寄存器中呢?我们这里可以采用比较直观的方法,通过伪指令ldr来完成,即:ldr r0,-=0xE0200080.


将GPC1_3配置为输出口的代码段为:


ldr r2,=0xE0200080     @将地址0xE0200080放到ARM寄存器R2 

ldr r3,[r2]         @加载地址单元0xE0200080的内容到R3中 

mov r0,#0xf         @将立即数0xf放到R0 

bic r3,r3,r0,lsl #12    @将R3的BIT[15:12]清零 

mov r1,#0x1         @将1放到ARM寄存器R1中 

orr r3,r3,r1,lsl #12    @将R3的BIT15:BIT12=0001 

str r3,[r2]         @将R3的内容存储到R2指向的地址单元(0xE0200080)


禁止GPC1_3上、下拉电阻功能代码片段:


ldr r2,=0xE0200088 

mov r0,#0x3 

ldr r3,[r2] 

bic r3,r3,r0,lsl #6 

str r3,[r2]


控制GPC1_3输出高电平代码片段


ldr r2,=0xE0200080 

mov r0,#1 

ldr r3,[r2] 

orr r3,r3,r0,lsl #3 

str r3,[r2]


控制GPC1_3输出低电平代码片段


ldr r2,=0xE0200080 

mov r0,#1 

ldr r3,[r2] 

bic r3,r3,r0,lsl #3 

str r3,[r2]


如果实现LED灯的亮、灭闪烁,在LED亮和灭之后都需要加入一定的延时,否则我们看不到灯的闪烁。 我们可以用类似如下的代码实现延时:


delay:

  mov r1,#0xf00000

  sub r1,r1,#1  

  cmp r0,#0  

  bne delay  

  mov pc,lr

关键字:ARM  LED驱动  程序设计 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用中断方式.实现PIC单片机的串口传输