实验四C LED跑马灯实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四C LED跑马灯实验
一、实验目的
●了解S3C2410的I/O及其相关设置;
●继续熟悉ARM开发环境。
二、实验设备
●硬件:
TX2440A实验板;
测控与显示扩展板;
PC机;
J-Link V8仿真器;
●软件:
PC机操作系统(WINDOWS XP);
ARM Developer Suite v1.2;
J-link ARM V4.081;
三、实验内容
●了解DM2410实验板I/O接口原理。
●利用ADS编译环境,用C语言编写跑马灯主程序。
四、实验说明
S3C2410有多达117位的I/O口可以提供方便的扩展。分为8组端口如下:— Port A (GPA): 23-output port
— Port B (GPB): 11-input/output port
— Port C (GPC): 16-input/output port
— Port D (GPD): 16-input/output port
— Port E (GPE): 16-input/output port
— Port F (GPF): 8-input/output port
— Port G (GPG): 16-input/output port
— Port H (GPH): 11-input/output port
所有的端口都是复用的,因为是复用的端口所以在应用I/O口之前应该对端口进行设置,使之成为需要的模式,这个模式是由八个I/O控制寄存器GPxCON设置,其中的x就是A-H,每个端口还有数据寄存器GPxDAT,和上拉寄存器GPxUP。
五、实验步骤
1、仔细阅读实验说明部分,熟悉S3C2410的I/O口及其控制;
2、建立工作目录如:D:\armlab
3、启动ADS1.2,使用ARM Executable Image工程模板建立一个工程led
4、将本“实验4流水灯目录”下的“LED”目录下的两个文件夹“system、uart”拷贝到新建立的工程目录“D:\armlab\led”下
5、建立文件组“inc”
鼠标右键点击屏幕,弹出
6、添加system\inc目录下的文件至当前工程中,并拖入到文件组“inc”下,不要添加
“mmu.h”文件。
7、添加system\src目录下的文件至当前工程中,并拖入到文件组“src”下, 不要添加“mmu.c”文件。
8、添加uart目录下的文件至当前工程中,uart.h拖入到文件组“inc”下,uart.c拖入到文件组“src”下。
9、建立源文件“Main.c”
10、按文件“实验四B ADS+AXD+JLINK仿真调试TX2440A(保留出厂程序方式)”要求设置项目及AXD,并编译改错。
11、连接PC机、J-link仿真器和实验板。
12、调试运行程序观察程序运行。自行修改程序观察各变量、寄存器等的作用。
13、程序运行后在扩展板上的LED灯将轮流显示(跑马等),打开终端仿真器secureCRT 可以接受实验板输出信息。
六、参考例程
实验中当端口输出为0时,相应的LED亮,输出1时,相应的LED灭。源程序如下://==================================================================== // 工程名称:LED.mcp
// 功能描述:用GPIO控制四个LED
// IDE环境:ADS v1.2
// 组成文件:main.c
// 硬件连接:LED1 -- GPF0
// LED2 -- GPF1
// LED3 -- GPF2
// LED4 -- GPF3
// 维护记录:2009-9-22 V1.0
//=================================================================
//=============================================================
// 文件名称:main.c
// 功能描述:定义了主函数
// 维护记录:2009-9-22 V1.0
//=============================================================
//====================================================
// 包含头文件区
//====================================================
#include "2440addr.h"
#include "2440lib.h"
#include "option.h"
#include "def.h"
#include "uart.h"
#define LED1ON 0xFE //LED1点亮值为0xFE(低电平点亮)
#define LED2ON (LED1ON<<1) //LED2点亮值为LED1左移1位
#define LED3ON (LED1ON<<2) //LED3点亮值为LED2左移1位
#define LED4ON (LED1ON<<3) //LED4点亮值为LED3左移1位
extern unsigned int PCLK;
void Main(void)
{
SetSysFclk(FCLK_400M); //设置系统时钟400M
ChangeClockDivider(2, 1); //设置分频1:4:8
CalcBusClk(); //计算总线频
Uart_Select(0);
Uart_Init(0, 115200);
Uart_Printf("LED TEST!\n");
rGPFCON = (rGPFCON | 0xFFFF) & 0xFFFFFF55; //GPF0--GPF3设置为output rGPFUP = rGPFUP & 0xFFF0; //使能GPF上拉电阻
rGPFDAT = 0x0F; //GPF低4位初始化为1
while(1)
{ U art_Printf("LED1 ON!\n");
rGPFDAT = LED1ON; //点亮LED1
Delay(1000);