S3C2440开发板裸机程序系列01--流水灯

平台介绍:TQ2440开发板,NorFlash 2M,NandFlash 521M(K9F4G08U0B), 2个32MSDRAM(H57V2562GTR-60C)

本系列目的:记录TQ2440裸机编程过程,顺便兼顾mini2440。

本篇内容:1.介绍GPIO要点;2.TQ2440流水灯编程;3.ADS1.2建立工程;4.下载执行;5.介绍启动程序

1. S32440的GPIO

查阅TQ2440的底板和核心板原理图,如下:

     

可知,LED1--GPB5, LED2--GPB6, LED3--GPB7, LED4--GPB8

查S3C2440手册,可知GPB有3个控制寄存器


其中,GPBCON配置引脚功能(2位),是输入、输出、特殊;GPBDAT设置引脚状态(1位);GPBUP设置是否启用上拉电阻。



上拉电阻的作用:1.解决总线驱动能力不足时提供电流;2.管脚悬空时容易受到外界干扰,加上拉电阻使引脚稳定在高电平,提高总线抗电磁干扰能力。

2. 参考程序:

Main.c

#include "led.h"
#include "common.h"

int Main()
{
	Led_Init();
	while(1)
	{
		LED01_ON; Delay(); LED01_OFF;
		LED02_ON; Delay(); LED02_OFF;
		LED03_ON; Delay(); LED03_OFF;
		LED04_ON; Delay(); LED04_OFF;
		LED01_ON;LED02_ON;LED03_ON;LED04_ON;
		Delay();Delay();Delay();
		LED01_OFF;LED02_OFF;LED03_OFF;LED04_OFF;
		Delay();Delay();Delay();
		LED01_ON;LED02_ON;LED03_ON;LED04_ON;
		Delay();Delay();Delay();
		LED01_OFF;LED02_OFF;LED03_OFF;LED04_OFF;
	}
}

led.c

#include "led.h"
#include "2440addr.h"

void Led_Init(void)
{
	rGPBCON &= ~((3<<10)|(3<<12)|(3<<14)|(3<<16));
	rGPBCON |= ((1<<10)|(1<<12)|(1<<14)|(1<<16)) ;
	rGPBUP &=  ~((1<<5)|(1<<6)|(1<<7)|(1<<8)) ;
	rGPBDAT |= (1<<5)|(1<<6)|(1<<7)|(1<<8);
}

common.c

void Delay(void)
{
	int i;
	for(i=0;i<1000000;i++);
}

led.h

#ifndef __LED_H__
#define __LED_H__

#include "2440addr.h"

#define LED01_ON		{rGPBDAT &= (~(1<<5));}
#define LED01_OFF		{rGPBDAT |= (1<<5);}
#define LED02_ON		{rGPBDAT &= (~(1<<6));}
#define LED02_OFF		{rGPBDAT |= (1<<6);}
#define LED03_ON		{rGPBDAT &= (~(1<<7));}
#define LED03_OFF		{rGPBDAT |= (1<<7);}
#define LED04_ON		{rGPBDAT &= (~(1<<8));}
#define LED04_OFF		{rGPBDAT |= (1<<8);}

extern void Led_Init(void);

#endif

common.h

#ifndef __COMMON_H__
#define __COMMON_H__

extern void Delay(void);

#endif

3.ADS1.2建立工程

ads1.2建立工程ARM Executable Image;添加文件;设置如下:









4.下载执行

开发板接3根线:1根5V电源,1根串口接电脑,1根TypeB USB接电脑。要安装TQ2440_USB下载驱动。串口可用SecureCRT软件打开。


可以选7,即直接下载到SDRAM中执行,也可以选a,即下载到NandFlash中,再从NandFlash启动即可。(我开始选a,把原Nandflash的uboot冲了,后来又充单独下载了一次uboot,nandflash仍恢复成linux,可行。)

5.介绍启动程序

必须要有启动代码,启动代码实现:

建立异常中断向量表;
初始化各模式的堆栈;
初始化硬件(关闭开门狗,设置系统时钟,设置SDRAM等);
初始化执行环境(加载域到执行域,即将代码从Nandflash拷贝到SDRAM)
跳转到c主程序。

本工程代码可以从这里下载: 点击打开链接

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值