LED——S5PV210的LED的理论与操作

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

一、LED物理特性介绍

LED本身有2个接线点,一个是LED的正极,一个是LED的负极。

LED的功能就是亮或者不亮,只需要给LED的正极加电压即可点亮LED,去掉电压则熄灭。

二、X210开发板的LED硬件接法

查阅原理图,发现开发板上一共有5颗LED:D22、D23、D24、D25、D26。

其中D26的正极接5V,负极接地,因此这颗LED只要上电就会常亮,分析得知这颗LED是电源指示灯。 

剩下4颗LED的正极接3.3V,负极接了SoC上的一个引脚(GPIO),具体接法是:

D22:GPJ0_3

D23:GPJ0_4

D24:GPJ0_5

D25:PWMTOUT1(GPD0_1)  

因为D22~D25的正极已经接了3.3V,而负极接在SoC的引脚上,因此可以通过SoC中编程来控制负极的电压值。只要负极输出低电平,这样在正负极上就会有电压差,LED即可点亮。

三、S5PV210的GPIO相关的寄存器

1、GPIO的含义

GPIO是“general purpose input output”的缩写,中文意思是“通用输入输出”。

GPIO其实就是芯片的一些引脚(芯片上的引脚有些不是GPIO,只有一部分是),作为GPIO的这类引脚,其功能和特点是可以被编程控制它的工作模式,也可以编程控制它的电压高低等。

通过之前的分析可知,X210开发板在设计电路时把LED接在了GPIO上,这样一来就可以通过编程控制GPIO的模式和输入输出值来操控LED的亮灭。如果把LED接在非GPIO上那就不行。

2、GPIO相关的寄存器

要操作GPIO,必须设置它们的寄存器,关于GPIO的部分,在数据手册的Section2.2中。

查阅数据手册可知,GPJ0相关的寄存器有:

  • GPJ0CON:GPJ0控制寄存器,用来配置各引脚的工作模式。
  • GPJ0DAT:当引脚配置为input/output模式时,寄存器的相应位和引脚的电平高低相对应。
  • GPJ0PUD:(pull up down)控制引脚内部弱上拉、下拉。
  • GPJ0DRV:(driver)配置GPIO引脚的驱动能力。
  • GPJ0CONPDN:低功耗模式下的控制寄存器。
  • GPJ0PUDPDN:低功耗模式下的上下拉寄存器。

这里重点地说明两个主要的寄存器:GPJ0CON和GPJ0DAT。

(1)GPJ0CON寄存器

由寄存器的内容可知,GPJ0CON寄存器每4bit控制一个GPIO引脚,比如bit[31:28]控制GPJ0_7这个GPIO。

(1)GPJ0DAT寄存器

由寄存器的内容可知,当端口被配置成输入输出模式时,GPJ0DAT寄存器bit0~bit7对应着输入或者输出的值。

三、编程实践

1、实践一之点亮LED灯

第一步,操控GPJ0CON寄存器中,选中output模式。

第二步,操控GPJ0DAT寄存器,相应的位设置为0。

代码如下所示,这个实验是点亮D22、D23、D24这三个LED灯。

_start:// 第一步:把0x11111111写入0xE0200240(GPJ0CON)位置ldr r0, =0x11111111	ldr r1, =0xE0200240			str r0, [r1]// 第二步:把0x0写入0xE0200244(GPJ0DAT)位置ldr r0, =0x0ldr r1, =0xE0200244str r0, [r1]   // 把0写入到GPJ0DAT寄存器中,则引脚即输出低电平,LED点亮// 下面两行写了一个死循环。因为裸机程序是直接在CPU上运行的,CPU会
// 逐行运行裸机程序直到CPU断电关机。如果我们的程序所有的代码都
// 执行完了CPU就会跑飞(跑飞以后是未定义的,所以千万不能让CPU
// 跑飞),不让CPU跑飞的办法就是在我们整个程序执行完后添加死循环
flag:b flag	

2、实践二之LED灯闪烁

代码如下所示。

#define GPJ0CON	0xE0200240
#define GPJ0DAT	0xE0200244.global _start		// 把_start链接属性改为外部,这样其他文件就可以看见_start了
_start:// 第一步:把所有引脚都设置为输出模式,代码不变ldr r0, =0x1111111// 从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断ldr r1, =GPJ0CON// 这个数是合法立即数还是非法立即数。一般写代码都用ldr伪指令str r0, [r1]// 寄存器间接寻址。功能是把r0中的数写入到r1中的数为地址的内存中去flash:// 第二步:全部点亮ldr r0, =((0<<3) | (0<<4) | (0<<5))	// 清清楚楚的看到哪个灭,哪个是亮ldr r1, =GPJ0DATstr r0, [r1]	// 把0写入到GPJ0DAT寄存器中,引脚即输出低电平,LED点亮// 第三步:延时bl delay					// 使用bl进行函数调用// 第四步:全部熄灭ldr r0, =((1<<3) | (1<<4) | (1<<5))	// 清清楚楚的看到哪个灭,哪个是亮ldr r1, =GPJ0DATstr r0, [r1]		// 第五步:延时bl delayb flash// 延时函数:函数名:delay
delay:ldr r2, =9000000ldr r3, =0x0
delay_loop:	sub r2, r2, #1				//r2 = r2 -1cmp r2, r3					// cmp会影响Z标志位,如果r2等于r3则Z=1,bne delay_loop              //bne是不相等则跳转mov pc, lr					// 函数调用返回

3、实践三之LED流水灯

代码如下所示。

#define GPJ0CON	0xE0200240
#define GPJ0DAT	0xE0200244.global _start					
_start:// 第一步:把所有引脚都设置为输出模式,代码不变ldr r0, =0x11111111			ldr r1, =GPJ0CON		str r0, [r1]		// 要实现流水灯,只要在主循环中实现1圈的流水显示效果即可
flash:// 第1步:点亮LED1,其他熄灭//ldr r0, =((0<<3) | (1<<4) | (1<<5))ldr r0, =~(1<<3)ldr r1, =GPJ0DATstr r0, [r1]	// 然后延时bl delay					// 使用bl进行函数调用// 第2步:点亮LED2,其他熄灭	ldr r0, =~(1<<4)ldr r1, =GPJ0DATstr r0, [r1]			// 然后延时bl delay					// 使用bl进行函数调用// 第3步:点亮LED3,其他熄灭	ldr r0, =~(1<<5)ldr r1, =GPJ0DATstr r0, [r1]			// 然后延时bl delay					// 使用bl进行函数调用b flash// 延时函数:函数名:delay
delay:ldr r2, =9000000ldr r3, =0x0
delay_loop:	sub r2, r2, #1				//r2 = r2 -1cmp r2, r3		// cmp会影响Z标志位,如果r2等于r3则Z=1,不相等则Z=0bne delay_loop  // bne指令判断Z是否等于0,Z等于0则执行delay_loopmov pc, lr					// 函数调用返回

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“.公司”域名注册总量TOP15:新网问鼎 万网居亚

IDC评述网&#xff08;idcps.com&#xff09;01月16日报道&#xff1a;根据ntldstats.com发布的最新数据显示&#xff0c;截止至01月15日17:00&#xff0c;在“.公司”域名注册总量大战中&#xff0c;新网打败众多国内外域名服务商&#xff0c;成为新晋霸主&#xff0c;其“.公…

Prepare for Mac App Store Submission--为提交到Mac 应用商店做准备

返回 Mac App Store Prepare for Mac App Store Submission 提交到Mac 应用商店之前的准备 Most of your time is spent on coding tasks, but to develop for the Mac App Store, you need to perform a number of administrative tasks, using Xcode and other tools. You’l…

ARM通识——关于ARM的一些认识

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 注意&#xff0c;由于文章的撰写时间过早&#xff0c;很多内容没有更新&#xff0c;这里仅当一个通识了解。 1、ARM发展的里程碑 ARM的前身为艾康电脑&#xff08;Acorn&#xff09;&#xff0c;于…

使用RMAN备份数据库

1.1使用控制文件备份全库 1.1.1配置备份路径 1.1.2 RMAN备份全库 1.2使用catalog数据库备份全库 1.2.1配置到远程数据库的TNS 1.2.2创建表空间及设置用户 1.2.3进入目录数据库并注册 1.2.4 CATALOG方式备份全库 转载于:https://www.cnblogs.com/myrunning/p/4231057.html

「北京」京东 JD.COM 招聘中/高级前端工程师

职位描述&#xff1a; 1、计算机或相关专业专科以上学历&#xff0c;2年以上网站前端开发经验&#xff0c;电子商务相关从业经验优先&#xff1b;2、精通各种Web前端技术&#xff0c;对符合web标准的网站重构有丰富经验&#xff0c;有成功作品&#xff1b;3、理解并掌握JavaScr…

前端上传组件Plupload使用指南

我之前写过一篇文章《文件上传利器SWFUpload使用指南》&#xff0c;里面介绍了上传组件SWFUpload的使用方法&#xff0c;但现在随着html5技术的逐渐推广和普及&#xff0c;再去使用以flash为上传手段的SWFUpload显然就有点过时了&#xff0c;毕竟html5原生的就给我们提供了文件…

HTML5简易在线画图工具

HTML5简易在线画图工具 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系&#xff0c;这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具&#xff1a; 查看DEMO&#xff1a;HTML5简易在线画图工具 功…

【excel技巧读书笔记001】清除打开过的文件记录

我们在工作的时候经常打开工作薄&#xff0c;这些工作薄都会在最近使用的工作薄列表看到&#xff0c;如果不希望别人看到自己打开过的记录&#xff0c;可以将最近使用的工作薄列表清空。具体步骤如下&#xff1a;1.【文件】-【选项】-【高级】-【显示】显示此数目的最近使用文档…

快速开发系统之前台页面 ---- NO1----登录页面

2019独角兽企业重金招聘Python工程师标准>>> 快速开发系统之前台页面 ---- NO1----登录页面 <% page language"java" contentType"text/html; charsetutf-8"pageEncoding"utf-8"%> <!DOCTYPE html> <html lang"z…

HP服务器F10 Function Disabled,无法使用F10安装操作系统

HP惠普服务器正确安装操作系统的方法是使用F10引导安装&#xff0c;可以自动安装操作系统&#xff0c;与硬件结合的更好&#xff0c;而且安装完成后&#xff0c;如果是windows操作系统&#xff0c;可以有HP管理页。某次&#xff0c;在使用F10引导安装操作系统的时候&#xff0c…

apt-get for ubuntu 工具简介

先介绍几个和apt-get相关的目录: /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. /var/cache/apt/archives 目录是在用 apt-get install 安装软件时&#xff0c…

【VMCloud云平台】SCAP(一)规划

完成了System Center中的悍将SCO基础篇后&#xff0c;咱们来聊聊SCAP&#xff0c;很多人说SCAP是一个简单的组件&#xff0c;何必单独拿出来聊呢&#xff1f;我倒是认为不然&#xff0c;作为System Center中为数不多的主打Portal类型的组件&#xff08;除开组件的Web Console就…

android学习日记12--布局管理器

1、概述  布局管理器的用途&#xff1a;  a、可以更好的管理组件;  b、通过使用布局管理器&#xff0c;Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类&#xff0c;所有可充当容器的父类都是ViewGroup&#xff0c;而ViewGroup也是View的子类 下面分别…

PXE装机+kickstart无人值守安装

搭建PXE远程安装服务器&#xff0c;本例集成了TFTP服务、DHCP服务&#xff0c;能够向客户机发送PXE引导程序&#xff0c;内核&#xff0c;启动菜单等。1.准备RHEL6安装源&#xff0c;网络安装源一般通过HTTP&#xff0c;FTP协议发布&#xff0c;另外页支撑NFS协议。采用FTP协议…

内核通识——内核中架构相关代码简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、内核代码基本分为3块 &#xff08;1&#xff09;arch目录 本目录下全是cpu架构有关的代码。本文说的就是这个目录中的内容。 &#xff08;2&#xff09;drivers目录 本目录下全是硬件的驱动。 &…

一道关于比赛胜负的Sql查询题目

以前做过一道题目&#xff0c;一直没有来得及总结下来。贴图&#xff1a; 记得以前曾经找到了两种方法&#xff0c;今天试了一下&#xff0c;还是可以的&#xff0c;贴出过程&#xff1a; 下面是具体的查询方法&#xff1a; 原来放的是图片,今天又练习了一下,附代码: 1 create …

SharePoint 2013 Nintex Workflow 工作流帮助(六)

博客地址 http://blog.csdn.net/foxdave 工作流动作 7. Call web service&#xff08;Integration分组&#xff09; 一个调用WebService的操作。 自然&#xff0c;配置项中主要是指向一个WebService进行调用。 关于配置项的说明&#xff1a; URL 必填项&#xff0c;也就是WebSe…

uboot的移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口&#xff08;串口0~3&#xff09;&#xff0c;并且用DB9接口引出了2个串口&#xff0c;分别是串口0和串口2。其中靠近网口的是串口0&#xff0c;远离网口…

充实你的素材库!10款免费的 PSD 素材下载

由于网页设计师没有时间来自己从零开始设计&#xff0c;所以在设计项目中使用网络上已有的设计素材是常见的方式。这就是为什么我们经常会到网上搜索可以免费下载的素材。 今天&#xff0c;我们这里有几套不同的免费的 PSD 素材分享给你&#xff0c;从 iPhone 样机到用户界面等…

position:fixed和scroll实现div浮动【示例】

前言 在自己建站的过程中&#xff0c;要实现一个div随滚动条浮动的效果&#xff0c;网上找了些示例不太好用&#xff0c;还是自己动手&#xff0c;丰衣足食&#xff0c;写的不好请大家谅解&#xff0c;毕竟我不是搞前端的&#xff0c;因为自己建站毕竟每一步都必须自己来&#…