编写led裸机程序并烧写到ARM开发板

1. 环境

操作系统:linux

开发板:mini2440

2. 编写流程

a)LED 电路图

上图,只要nLED_1~~nLED4 为低电平,那么发光二极管导通,LED亮。

b)电路图中nLED_1~~nLED_4 为网络标号,通过网络标号,找到ARM芯片对应的管脚,如下图

管脚对应如下:

GPB5nLED_1LED1
GPB6nLED_2LED2
GPB7nLED_3LED3
GPB8nLED_4LED4

c)查看GPB IO口使用方法:

i)GPBCON、GPBDAT物理地址如下:

ii)GPBCON功能说明:

iii)GPBDAT 说明

我们只需要设置控制寄存器GPBCON功能为输出,数据寄存器GPBDAT电平为低,就可以点亮LED)

3. 步骤

a)声明指针变量指向控制寄存器GPBCON、数据寄存器GPBDAT:

	unsigned long *GPBCON = 0x56000010;
	unsigned long *GPBDAT = 0x56000014;

b)设置控制寄存器GPBCON为输出功能:

	*GPBCON &= 0xfffc03ff; // f f f 1100 0000 0011 f f   中间为二进制
	*GPBCON |= 0x00015400; // f f f 1101 0101 0111 f f
c)设置数据寄存器GPBDAT为低电平,LED亮:

	*GPBDAT = 0;
4.源代码

#include <stdio.h>

/*	GPB5  --  led1
 *	GPB6  --  led2
 *	GPB7  --  led3
 *	GPB8  --  led4
 *
 *	GPBCON 0x56000010
 *	GPBDAT 0x56000014
 */
void LED(void)
{
	unsigned long *GPBCON = 0x56000010;
	unsigned long *GPBDAT = 0x56000014;

	// 0000 0001 0101 0100 0000 0000
	//        1   5    4     f     f
	*GPBCON &= 0xfffc03ff;
	*GPBCON |= 0x00015400;
	
	*GPBDAT = 0;
	
	int k;
	int i;
	for(k = 0; k < 16; k++)    //LED显示4位16进制数
	{
		*GPBDAT = ~(k<<5);
		for(i = 0; i < 0x100000; i++);
	}	
	
}

5. 编译步骤,使用MAKEFILE文件:

MAKEFILE文件内容:

led_test.bin:led_test
	arm-linux-objcopy -O binary ./led_test led_test.bin
led_test:led_test.o
	arm-linux-ld -Ttext=0x30000000 led_test.o -o led_test
led_test.o:led_test.c
	arm-linux-gcc -c led_test.c -o led_test.o
.PHONY:clear copy
clear:
	rm -rf led_test.o led_test led_test.bin
copy:
	cp led_test.bin /var/lib/tftpboot/

make命令生成led_test.bin下载到开发板内存(SDRAM),运行即可。具体可以查看裸机程序下载到开发板教程,这里不再做详细解说,可以参照以下链接: http://download.csdn.net/detail/familycsd000/5773307







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值