嵌入式Linux学习入门:控制LED灯
记录自己linux学习过程,让自己能够一直坚持下去
1、原理图分析:

nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭,

S3C2440芯片GPF4-GPF6对应nLED_1, nLED_2, nLED_4,
所以代码里面操作GPF4-GPF6就可以控制LED灯亮灭。
2、写代码前了解事项

第一步:将GPF0-GPF4配置为输出功能
第二步:控制GPF0-GPF4输出低电平
3、编写代码
.text
.global _start
_start:
ldr r0, =0x53000000 @ WATCHDOG寄存器地址
mov r1, #0x0
str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启 ldr sp, =* @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
@ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
bl main @ 调用C程序中的main函数
halt_loop:
b halt_loop
参考韦东山视频模仿写的汇编部分,主要是为调用C语言程序,准备条件
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054) int main(void)
{
unsigned long i = ; GPFCON = 0x00001500; //将GPF4 GPF5 GPF6设置为输出 while()
{ GPFDAT = 0x00000060; //控制GPF4输出低电平,LED1亮
for(i=; i<; i++); //延时 GPFDAT = 0x00000050; //控制GPF5输出低电平,LED2亮
for(i=; i<; i++); GPFDAT = 0x00000030; //控制GPF6输出低电平,LED4亮
for(i=; i<; i++);
} return ;
}
4、编译代码,烧录执行
在linux环境下使用GCC编译,同样跟着视频学习写了Makefile
led_test:main.c start.S
arm-linux-gcc -c start.S -o start.o
arm-linux-gcc -c main.c -o main.o
arm-linux-ld -Ttext 0x0000000 start.o main.o -o LED_TEST_ELF
arm-linux-objcopy -O binary -S LED_TEST_ELF led_test.bin
arm-linux-objdump -D -m arm LED_TEST_ELF > LED_TEST.dis
clean:
rm -f *.o led_test.bin LED_TEST_ELF LED_TEST.dis
将生成的led_test.bin烧录到板子中,观察现象,按照预期流水灯走起来了!
嵌入式Linux学习入门:控制LED灯的更多相关文章
- arduino入门学习实现语音控制LED灯
需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...
- 树莓派开机运行Python脚本 控制LED灯闪烁
一.新建一个开机运行文件 在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个led.desktop文件(文件名以.desktop结尾) 编辑le ...
- arduino 红外遥控器控制LED灯
/* 日期:2016.9.1 功能:红外遥控器控制LED灯 开,关,闪烁,呼吸 元件: 跳线公公头 * 5 led 220欧电阻 红外接收管,红外遥控 接线: 红外灯面向自己从左到右分别接 IO3 , ...
- C#与Arduino通过串口通信来控制LED灯的状态
一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...
- BLE 安卓APP控制LED灯的实现(转)
源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final Blu ...
- enc28J60 网页控制LED灯
软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino ...
- 云中树莓派(4):利用声音传感器控制Led灯
云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...
- 嵌入式Linux学习笔记之第一阶段---基础篇
嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编 ...
- Arduino控制LED灯(开关控制)
问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动. 原因: ...
随机推荐
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- 一款强大的Android网络渗透软件dsploit
dSploit是一款基于Android系统的功能十分全面强大的网络渗透工具,可以提供给网络安全工作人员检查网络的安全性.小黑这次主要使用了其中的"简易嗅探""会话劫持&q ...
- 图解TCP/IP→第2章基础知识
####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70 ...
- 对日期 ,和 master.dbo.spt_values 表操作
if object_id('tempdb..#xs') is not null drop table #xs; ), date datetime, sale float) insert into #x ...
- mysql基于“报错”的注入
报错是如何转为xss的? mysql语句在页面报错,泄露信息 ===================================================================== ...
- IIS部署遇到的一些问题
IIS部署时候会遇到一些具体的问题,记录一下.此处的部署环境为Windows Server 2012 64位版本 1.基本部署:角色和功能管理-->web服务器,勾选相应的服务与功能,然后安装即 ...
- [转载]深入理解HTTP Session
深入理解HTTP Session session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词,也是最多被滥用的名字之一,在不同的场合,session一次的 ...
- spring data jpa分页
controller层 @RequestMapping(value="/search") @ResponseBody public String search(HttpServle ...
- 正确解读free -m
如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看. $ free -m total used free shared buffers cachedMem: 1002 ...
- Xcode7下模拟器输入文本无法显示系统键盘的解决办法
xcode7下的ios模拟器输入内容无法系统键盘,只能用电脑键盘输入内容,这样可能会对调试带来麻烦. 其实xcode7下的ios模拟器默认只能使用一种,要么是模拟器系统键盘,要么就是是电脑键盘.设置方 ...