首页 > 代码库 > S5PV210裸机程序之点亮LED【基于九鼎X2103BVS】

S5PV210裸机程序之点亮LED【基于九鼎X2103BVS】

前期准备:

  1. 查阅x210bv3s.pdf得到开发板LED模块的原理图:

    技术分享

    从原理图中了解到:其中三颗LED分别接在GPJ0_3、GPJ0_4、GPJ0_5,还有一颗LED接在PWMTOUT1。下面我们继续查阅手册

  2. 查阅x210cv3.pdf得到PWMTOUT1对应的引脚原理图:

技术分享

    由此我们得到了PWMTOUT1所对应的引脚为GPD0_1。

3.  查阅S5PV210_UM_REV1.1.pdf手册,得到引脚对应的寄存器地址以及相关寄存器的设置:

技术分享

技术分享

技术分享

    从手册中,我们可知一下三个重要的参数:

   1. GPJ0CON的寄存器地址为: 0xE0200240,GPJ0DAT的寄存器地址为:0xE0200244

    2. GPJ0_3~GPJO_5中对应位设置为0001则为Output模式

    3.结合LED原理图得知,当对应的引脚输出低电平时,则LED灯就点亮,否则就熄灭

    同样道理,我们找到GPD0相关的说明文档:

技术分享

技术分享

技术分享

    可知,GPD0CON对应寄存器的地址为:0xE02000A0。GPD0DAT对应寄存器的地址为:0xE02000A4,对应位的设置参数与上面的一致。

    至此,我们对于这个开发板中LED的分析工作就告一段落,下面就开始我们的编程。

 

编程实现:

  1. 目的:实现四颗LED同时点亮和熄灭的循环闪烁。

  2. 代码:

#define GPJOCON 0xE0200240
#define GPJ0DAT 0xE0200244
#define GPD0CON 0xE02000A0
#define GPD0DAT 0xE02000A4

.global _start
_start:

 //GPJ0_3 ~ GPJ0_5 are output
 ldr r1,=GPJOCON
 ldr r0,=0x00111000
 str r0,[r1]

 //GPD0_0 is output
 ldr r0,=0x0010
 ldr r1,=GPD0CON
 str r0,[r1]
bling:
 //led1-3 are on
 ldr r0,=(0<<3 | 0<<4 | 0<<5)
 ldr r1,=GPJ0DAT
 str r0,[r1]
 
 //led4 is on
 ldr r0,=0<<1
 ldr r1,=GPD0DAT
 str r0,[r1]

 bl delay
 
 //led1-3 are off
 ldr r0,=(1<<3 | 1<<4 | 1<<5)
 ldr r1,=GPJ0DAT
 str r0,[r1]
 
 led4 is off
 ldr r0,=1<<1
 ldr r1,=GPD0DAT
 str r0,[r1]

 bl delay

 b bling


delay:
 ldr r2,=9999999
 ldr r3,=0x0
 delay_loop:
  cmp r2, r3
  sub r2, r2, #1
  bne delay_loop
 mov pc,lr

 3.  通过交叉编译工具得到led.bin

 4. 通过DNW工具,将bin写入到地址D0020010中(查手册可知),这个LED点亮实验就算是完成了

 

本文出自 “沃特” 博客,请务必保留此出处http://water3700348.blog.51cto.com/13058625/1947989

S5PV210裸机程序之点亮LED【基于九鼎X2103BVS】