你的位置:首页 > 操作系统

[操作系统]s5pv210学习之一步步点亮LED总结


当我们想操控一个硬件的时候,我们有必要先去了解这个硬件的一些物理特性,比如如何点亮LED,那么我们首先就得了解LED的一些特性,如下:
  LED本身有两个接线点,一个是LED的负极,一个是LED的正极。LED这个硬件本身存在的作用就是亮或者不亮,而我们想要LED亮或者不亮,那就可以通过对LED的正负极加压或者去掉电压来实现控制LED亮或者不亮。当LED的正负极加上正电压时,形成了一定的电压差,此时LED就会被点点亮,想要熄灭LED灯,那么去掉电压即可.

当了解了LED的工作特性过后,怎么实现通过写一段程序去操控这个LED灯呢?

  分析:当我想点亮或熄灭LED时,那我就得就得给LED的正负极加上或去掉电压。所以我写程序程序去控制LED亮或不亮时,是通过程序去控制LED正负极之间所形成的电压差,这样就达到了目的。那么怎么通过程序去控制LED的电压。

  首先我们需要查看硬件手册,找到LED所对应的硬件原理图(下载地址:https://yunpan.cn/cS9DikKqZrJrD  访问密码 fee5),如下:

通过对本图的分析,我们可以知道,开发板上有5个LED灯,D26可以直接看出是电源指示灯(因为一端接的5V电压,一端直接接地,只要上电就会亮,所以为电源指示灯)

  而其他几颗LED就是我们可以认为控制的,因为我们能够操控LED主要是CPU能够通过SFR(special function register特殊功能寄存器),对SFR写值实现对硬件的操控,所以我们查看这个图的主要目的就是找出每颗LED分别所对应的寄存器的引脚,如下:

  D22 -> GPJ0_3

  D23 -> GPJ0_4

  D24 -> GPJ0-5

  D25 -> PWMTOUT1(GPD0_1通过查找核心板手册可知下载地址:https://yunpan.cn/cS9DC4rnGHmWK  访问密码 06b5)

当我们通过硬件手册查找到了LED所对应的引脚,只是完成了小小的一步,接先来还要继续查阅相关的数据手册(下载地址:https://yunpan.cn/cS9zJTgzRskUS  访问密码 8319),所以打开数据手册,通过目录找到需要查找的GPJ0的相关地方,如图:

通过查找数据手册后,我们主要是对GPJ0CON,GPJ0DAT这两个寄存器进行配置

GPJ0CON:配置控制模式的,比如是输入或者输出亦或者其他模式,因为我要点亮LED,所以我需要配置成输出模式,那么就需要通过手册查找输出模式时需要把这个寄存器的值修改为什么

最开始我们查阅硬件手册的时候知道了有三个LED所对应的分别是 GPJ0_3 ,GPJ0_4,GPJ0-5,所以我们只需要配置这三个所对应的相应的值就可以了

GPJ0DAT:当引脚配置为input/output模式时,寄存器的相应位和引脚的电平高低相对应。所以我们需要把GPJ0DAT对应的3、4、5位配置为0,使输出低电压才能是LED正负极形成电压差

当一切进行到这里,差不多完成很大一部分了,但是还有最后一点,我们怎么修改寄存器的值呢,答案是用访问内存的方法去访问寄存器,因为s5pv210是I/O与内存统一编制的,cpu是通过地址去访问寄存器,所以我们可以从数据手册上的到我们需要配置的两个寄存器的地址:

GPJ0CON :0xE0200240

GPJ0DAT :0xE0200244

好了,现在我们写程序就知道该怎么写了

  

_start:
//把0x11111111写入0xE0200240(GPJ0CON)位置
ldr r0, =0x11111111 
ldr r1, =0xE0200240 
str r0, [r1] 

// 把0x0写入0xE0200244(GPJ0DAT)位置
ldr r0, =0x0
ldr r1, =0xE0200244
str r0, [r1] 

flag: 
b flag   

.....未完....