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

发布者:lqs1975最新更新时间:2021-10-14 来源: eefocus关键字:S3C2440  开发板  裸机程序  流水灯 手机看文章 扫描二维码
随时随地手机看文章

平台介绍: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主程序。

————————————————

版权声明:本文为CSDN博主「君乙杨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yangqiwei2012/article/details/80374072


关键字:S3C2440  开发板  裸机程序  流水灯 引用地址:S3C2440开发板裸机程序系列01--流水灯

上一篇:S3C2440裸机------GPIO
下一篇:S3C2440开发板裸机程序系列02--按键和蜂鸣器

推荐阅读最新更新时间:2024-11-08 20:50

从点亮第一个灯到流水灯
#include reg52.h //52系列单片机头文件 sbit led1=P1^0; //声明单片机P1的第一位 void main () // 主函数 (从这里开始执行) { led1=0; //点亮的一个二极管 (所有的I/O口都是默认的高电平) } #include reg52.h void main() { P1=0xfe; } #include reg52.h void main () { P1=0xfe; while(1); //大循环 } for语句的延时 #include
[单片机]
从点亮第一个灯到<font color='red'>流水灯</font>
S3C2440的UART详解
1、UART原理简介 在介绍2440的UART控制器之前,我们首先来了解一下UART的原理 UART:Universal Asynchronous Receiver/Transmitter(通用异步收发送器),用来传输串行数据,发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。 UART最精简的连线形式只有3根线,TXD用于发送,RXD用于接收,GND用于提供参考电平。UART之间以帧作为数据传输单位,帧由具有完整意义的若干位组成,它包含开始位、数据位、校验位和停止位。发送数据之前,互相通信
[单片机]
<font color='red'>S3C2440</font>的UART详解
uboot-2011.12移植到S3C2440(序五)——ARM寄存器说明
参考《ARM应用系统开发详解》 ARM体系结构的寄存器R0~R15主要有三类: @未分组寄存器R0~R7 @分组寄存器R8~R14 @PC寄存器R15 未分组寄存器 同一个寄存器名在ARM微处理器内部只有一个独立的物理寄存器与之对应。 分组寄存器 每一个物理寄存器分别与不同的处理器模式相对应。对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。对于于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行
[单片机]
移植ucGUI到s3c2440
说明:此文档,可能遗漏一些修改过的地方,根据编译情况,自行修改。 会在以后的完善过程中更新文档。 1、在 http://www.ucgui.com/zuoping.asp 下载uc/GUI 3.24版源码 2、参考《基于MDK+jlink平台s3c2440裸机程序》建立工程S3C2440-ucGUI。 直接用友善之臂裸机下的s3c2440 LCD底层驱动,在MDK环境调通LCD驱动。 3、复制源码到工程目录下 A.复制Config和gui目录到工程目录下。 B.复制Sample目录下的GUI_X目录到工程目录下,要用到GUI_X.c 4、添加源代码到工程中。 A.在Project Workspace下
[单片机]
MC9S12XS128多功能开发板学习笔记
#时钟的设置 时钟主要为三个寄存器的设置: SYNR; REFDV; POSTDIV; 使用的公式为: FVOC=2OSCCLK((SYNR+1)/(REFDV+1)) PLLCLK=FVCO/(2*POSTDIV) BusClock=PLLCLK/2 BusClock为总线频率(单片机实际运行频率); 首先默认两个数值 REFDV=1;POSTDIV=0;(POSTDIV为0时, PLLCLK=FVCO); FOSC为外部晶振频率 根据上图计算出REFCLK的范围确定REFDV的值,例如外部晶振为12MHZ; 我们需要48MHZ的频率,那么REFFRQ=01;REFDV=0x40|0x01; SYNR=7; 初
[单片机]
MC9S12XS128多功能<font color='red'>开发板</font>学习笔记
变电所遥视监控系统研究
  1 引言   随着我国电网调度管理水平的不断提高, 许多地区电力通信网的建设取得了很大的进展,基本上实现了数字化通信。采用光纤、数字微波或无线扩频等通信方式,信道带宽和信道质量明显提高。而要全面直观地了解变电站的真实情况,远程视觉监控是必备的监控管理手段,它可在几十公里及更远之外的调度中心及时准确地掌握变电站的情况, 并对各种情况进行操作控制,做到真正的无人值守。   2 无人值班变电所运行现状   近年来, 随着电网规模的迅速扩大, 电力系统科技水平不断提高, 无人值守变电所的数量日益增加, 尤其随着变电所自动化程度的不断提高,非电气因素造成的事故比例越来越高。如何降低或避免这类事故的发生,已是实现无人值班变电所要解决
[单片机]
变电所遥视监控系统研究
s3c2440裸机-I2c编程-3.i2c程序框架
1.iiC设备的功能 很显然,IIC控制器提供了传输数据的能力,至于数据有什么含义,IIC控制器并不知道,数据的含义有外部i2c从设备,我们需要阅读芯片手册,才知道IIC控制器应该发出怎样的数据。 下图是AT24cxx的操作方法: 2.I2c程序框架 显然我们的程序应该分为两层(IIC设备层,IIC控制器层),框架如下图所示: 最上层是i2c_test层,用来对i2c的功能进行测试和验证。 第2层是i2c设备层,用来对具体某一型号的从设备进行i2c读写 第3层是通用i2c控制器层,用来提供对具体某一型号的i2c主控进行管理操作 最底层是i2c控制器具体的型号层 在通用i2c控制层,我们提供一个统一的接口i2c_transf
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-I2c编程-3.i2c<font color='red'>程序</font>框架
s3c2440_LCD控制器设置及代码详解
1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通 过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。 2. S3C2440内部LCD控制器结构图: 我们根据数据手册来描述一下这个集成在S3C2440内部的LCD控制器: a:LCD控制器由REGBANK、LCDCDMA、TIMEGEN、VIDPRCS寄存器组成; b:REGBAN
[单片机]
s3c2440_LCD控制器设置及代码详解
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved