从点亮一个LED开始,Cortex-A9裸机程序设计
电路原理图:

如何点亮一个LED?
通过对原理图进行分析,我们能够发现给三极管的基极加上一个高点平时,三级管be结导通构成通路,此时二极管就点亮了。若要将LED熄灭只需取消高电平输出。
如何使三级管基极获得一个高电平?
控制三极管基极的其实是exynos4412的一个引脚(忽略具体是怎么连接的),因此我们要做的就是:
- 配置相关寄存器使引脚变为输出功能(这里配置为输出功能 0x1)
- 配置上下拉(若需要)
- 操作寄存器改变引脚电平变化
- 配置带负载能力(若需要)
相关寄存器
配置引脚功能

获取或设置引脚状态

配置引脚内部上下拉

配置带负载能力

一个简单流水灯的实现:
#include "exynos_4412.h" /* LED点亮、熄灭以及状态反转操作 */
#define LED_ON(LED_x) ( *(LED_x.port) |= (1 << LED_x.pin) )
#define LED_OFF(LED_x) ( *(LED_x.port) &= (~(1 << LED_x.pin)) )
#define LED_REV(LED_x) ( *(LED_x.port) ^= (1 << LED_x.pin) ) /* 存放一个LED的端口信息以及引脚信息 */
typedef struct
{
unsigned int *port; /* LED端口状态寄存器地址 */
int pin; /* 端口中的第几pin */ }led_t; /* 定义并初始化4个LED,方便接下来操作 */
led_t LED_2 = {(unsigned int *)0x11000C44, }; /*GPX2DAT, bit[7]*/
led_t LED_3 = {(unsigned int *)0x11000C24, }; /*GPX0DAT, bit[0]*/
led_t LED_4 = {(unsigned int *)0x114001E4, }; /*GPF3DAT, bit[4]*/
led_t LED_5 = {(unsigned int *)0x114001E4, }; /*GPF3DAT, bit[5]*/ /* 简单延时函数 */
void delay_ms(unsigned int time); int main()
{
/*配置引脚作为输出*/
GPX2.CON = GPX2.CON & ~(0xf << ) | (0x1 << );
GPX1.CON = GPX1.CON & ~0xf | 0x1;
GPF3.CON = GPF3.CON & ~(0xff << ) | (0x11 << ); /*实现简单流水灯*/
while()
{
LED_ON(LED_2);
LED_OFF(LED_3);
LED_OFF(LED_4);
LED_OFF(LED_5);
delay_ms(); LED_OFF(LED_2);
LED_ON(LED_3);
LED_OFF(LED_4);
LED_OFF(LED_5);
delay_ms(); LED_OFF(LED_2);
LED_OFF(LED_3);
LED_ON(LED_4);
LED_OFF(LED_5);
delay_ms(); LED_OFF(LED_2);
LED_OFF(LED_3);
LED_OFF(LED_4);
LED_ON(LED_5);
delay_ms();
}
return ;
} void delay_ms(unsigned int time)
{
int i, j;
while(time--)
{
for(i = ; i < ; i++)
for(j = ; j < ; j++); //do nothing
}
}
ARM汇编代码实现LED闪烁
.globl _start
.arm
_start:
LDR R0,=0x11000C20
LDR R1,[R0]
BIC R1,R1,#0x0000000f
ORR R1,R1,#0x00000001
STR R1,[R0]
loop:
LDR R0,=0x11000C24
LDR R1,[R0]
ORR R1,R1,#0x01
STR R1,[R0]
BL delay
LDR R1,[R0]
BIC R1,R1,#0x01
STR R1,[R0]
BL delay
B loop
delay:
LDR R2,=0xfffffff
loop1:
SUB R2,R2,#0x1
CMP R2,#0x0
BNE loop1
MOV PC,LR
.end
从点亮一个LED开始,Cortex-A9裸机程序设计的更多相关文章
- 点亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 点亮一个led
1:RS232电平:计算机串口 高电平为-12v,低电平为+12v,所以计算机与单片机进行通信的时候需要加电平转换芯片max232(高电平为-9到-12,低电平为+3到+12之间的. max232通常 ...
- 进阶之路(基础篇) - 001 亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- STM32学习笔记(一)——点亮一个LED
引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...
- 第一个程序点亮一个LED灯
#include <reg52.h> // 引用52包文件 可以理解为命名空间 sbit P1_0 = P1^0; // 定义P1管脚0 void main() ...
- linux IMX6 汇编点亮一个LED灯
驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...
- 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》
1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...
- 在 S5PV210 的 开发板上 点亮 一个 LED 灯
参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准 ...
随机推荐
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收 ...
- Tooltip(提示框)组件
一.加载方式 //class加载方式 <a href="http://www.ycku.com" title="这是一个提示信息!" class=&quo ...
- position:fixed定位时 “高度坍塌” 问题的解决
问题:对于固定定位的元素,固定住高度,后面紧跟的模块会当做前面的固定元素不存在似的,这给布局带来了困扰 解决方法: 1.给第二个模块div设置margin-top的值,margin-top的值设为大于 ...
- SQL Server 2005无日志文件附加数据库
公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. ...
- [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码
这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥, 只 ...
- oracle commit之后的数据回滚
当你晕晕乎乎的执行了commit之后,突然间意思到自己点错了,那说明你和我碰到了一样的问题. 瞬间感觉大冷天头顶冒汗,那就说明你的感觉对了.废话少说,下面是我的办法: 下面的例子都是以Test表为例. ...
- centos卸载自带的apache(httpd)
.[root@localhost etc]# rpm -qa|grep httpd,查看与httpd相关软件包. httpd--.el5_2.CentOS. .然后删除httpd: [root@loc ...
- Java学习笔记--xml构造与解析之Sax的使用
汇总:xml的构造与解析 http://www.cnblogs.com/gnivor/p/4624058.html 参考资料:http://www.iteye.com/topic/763895 利用S ...
- Codeforces 573B Bear and Blocks
http://codeforces.com/problemset/problem/573/B 题目大意: 给出n个连续塔,每个塔有高度hi,每次取走最外层的块,问需要多少次操作能够拿光所有的块. 思 ...
- 如何将Icon转成Bitmap(对ICON的内部格式讲的比较清楚)
最近工作中有个需求是将Icon转成带Alpha通道的Bitmap, 虽然网上有不少这方面的文章,但很多都是错的, 这里记录下,或许对后来人有用. 要实现这个功能,我们首先需要理解Icon的格式,我 ...