非操作系统下的实验嵌入式实验报告.docx

上传人:b****6 文档编号:3225999 上传时间:2022-11-20 格式:DOCX 页数:46 大小:902.12KB
下载 相关 举报
非操作系统下的实验嵌入式实验报告.docx_第1页
第1页 / 共46页
非操作系统下的实验嵌入式实验报告.docx_第2页
第2页 / 共46页
非操作系统下的实验嵌入式实验报告.docx_第3页
第3页 / 共46页
非操作系统下的实验嵌入式实验报告.docx_第4页
第4页 / 共46页
非操作系统下的实验嵌入式实验报告.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

非操作系统下的实验嵌入式实验报告.docx

《非操作系统下的实验嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《非操作系统下的实验嵌入式实验报告.docx(46页珍藏版)》请在冰豆网上搜索。

非操作系统下的实验嵌入式实验报告.docx

非操作系统下的实验嵌入式实验报告

HarbinInstituteofTechnology

实验报告

课程名称:

嵌入式系统

院系:

电信学院

班级:

1105301

姓名:

张常乐

学号:

1110530110

指导教师:

任广辉

实验时间:

2014年12月

哈尔滨工业大学

第二章非操作系统下的实验

2.2GPIO接口实验

2.2.1实验目的

1.熟悉ADS软件的使用

2.熟悉程序的下载和调试流程

3.熟悉GPIO的操作

2.2.2实验原理

1)GPIO的原理及寄存器操作

GPIO(GeneralPurposeI/O,通用输入/输出接口)也称为并行I/O(parallelI/O),是最基本的I/O形式,由一组输入引脚、输出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。

GPIO引脚能够通过软件编程改变输入/输出方向。

S3C2440A共有130个多功能复用输入/输出端口(I/O口),分为端口A~端口J共9组。

端口A除了作为功能口外,只能够作为输出口使用,其他端口都可以为输入/输出端口。

为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。

每个引脚的功能必须在启动主程序之前进行定义。

如果一个引脚没有使用复用功能,那么它可以配置为I/O口。

与配置I/O口相关的寄存器包括:

◆端口控制寄存器(GPACON~GPJCON)

◆端口数据寄存器(GPADAT~GPJDAT)

◆端口上拉寄存器(GPBUP~GPJUP)

以端口B为例,说明端口寄存器的配置方式,端口B的寄存器如下所示:

端口B控制寄存器:

端口B数据寄存器:

端口B上拉电阻寄存器:

2).LED硬件接口电路

LED的硬件接口电路如图2-1所示,LED与ARM的GPB端口连接,需要使用的寄存器有:

3).蜂鸣器硬件接口电路

蜂鸣器的硬件接口如图2-2所示,其与ARM的GPB端口的第0位GPB0连接,对其操作涉及的寄存器有

4)按键硬件接口电路

按键硬件接口如图2-3所示,其采用的上拉的形式,按键没有按下则管脚的电平为高电平,当按键按下后,管脚电平为低电平。

四个按键分别跟ARM的GPF口的第0、1、2和4位连接,对其操作涉及的寄存器有:

2.2.3实验仪器与设备

1.TQ2440实验平台

2.J-LINK调试器

2.2.4实验步骤

1.实现控制LED开启关闭功能

(1)单步调试例程,也可以双击程序中的某一行添加断点,则全速运行后程序会停在断点处。

并且在调试过程中观察LED的变化。

写出控制LED开启和关闭的程序语句和对应LED的状态,填入下表当中

序号

程序

现象

1

rGPFDAT=rGPFDAT&(~(1<<0));//PORTB[0]为低电平

LED0点亮

2

rGPFDAT=rGPFDAT|(1<<0);//PORTB[0]为高电平

LED0熄灭

(2)例程中实现的是对一个LED的控制,修改例程,写出一个对所有LED控制的通用函数,该函数的参数有两个:

LED的号码和LED的开关状态。

写出该函数并且写出调用该函数控制4个LED状态的语句和对应现象,填入下表中:

序号

程序

现象

1

rGPFDAT&=~((1<<0)|(1<<1)|(1<<2)|(1<<3));//PORTB[0至3]为低电平

LED0~LED3全部点亮

2

rGPFDAT|=((1<<0)|(1<<1)|(1<<2)|(1<<3));//PORTB[0至3]为高电平

LED0~LED3全部熄灭

3

rGPFDAT&=~((1<<0)|(1<<1)|(1<<2)|(1<<3));//PORTB[0至3]为低电平

delay(20);

rGPFDAT|=((1<<0)|(1<<1)|(1<<2)|(1<<3));//PORTB[0至3]为高电平

delay(20);

LED0~LED3循环点亮熄灭

2.实现流水灯功能

(1)利用上面编写的通用的LED控制函数,实现LED依次亮灭的过程(流水灯),把流水灯控制的语句填入下表中并描述LED的变化

序号

程序

现象

1

rGPFDAT&=~((1<<0));//PORTB[0]为低电平

delay(20);

rGPFDAT|=((1<<0));//PORTB[0]为高电平

delay(20);

rGPFDAT&=~((1<<1));//PORTB[1]为低电平

delay(20);

rGPFDAT|=((1<<1));//PORTB[1]为高电平

delay(20);

rGPFDAT&=~((1<<2));//PORTB[2]为低电平

delay(20);

rGPFDAT|=((1<<2));//PORTB[2]为高电平

delay(20);

rGPFDAT&=~((1<<3));//PORTB[3]为低电平

delay(20);

rGPFDAT|=((1<<3));//PORTB[3]为高电平

delay(20);

LED0~LED3循环点亮熄灭实现流水灯功能

3.实现控制蜂鸣器功能

(1)跟LED的控制类似,蜂鸣器的控制也是通过控制IO输出电平来控制的。

蜂鸣器使用的是GPB0,只需要对该端口操作即可

(2)写出控制蜂鸣器鸣叫和静音的语句,并把实验现象填入下表当中

序号

程序

现象

1

rGPBDAT=rGPBDAT&(~(1<<0));//PORTB[0]为低电平

delay(10);

rGPBDAT=rGPBDAT|(1<<0);//PORTB[0]为高电平

delay(10);

TX实验板上的蜂鸣器实现鸣叫和静音循环

4.实现按键控制LED功能

(1)写出查询按健状态函数,并根据不同的按键控制不同的LED亮

(2)按键使用的是IO口是GPF0、GPF1、GPF2和GPF4。

需要将其配置为输入的模式,然后读取数据寄存器即可

(3)把按键检测的程序段和对应的现象写入下表中

序号

程序

现象

1

For(j=0;j<4;j++)

{

If((rGPFDAT&=(1<

{

rGPFDAT&=~((1<<0));

}

Else

{

rGPFDAT|=((1<<0));

}

}

程序循环监测4个按键,当按下1~4对应的按键后1~4的LED对应点亮,松开后便熄灭

2.2.5实验思考题

从程序编写的角度,比较51单片机和SC32440的IO操作的不同之处

答:

51单片机可以单独对1bit的位进行操作,而SC32440必须一次性对整个IO口进行操作。

2.3中断实验

2.3.1实验目的

1.熟悉ARM的中断操作

2.掌握按键检测的方法

2.3.2实验原理

1).中断的原理和相关寄存器

S3C2440A中的中断控制器可以从60个中断源接收中断请求。

这些中断源由内部外设提供,例如DMA控制器、UART、IIC等。

当接收来自内部外设和外部中断请求引脚的多个中断请求时,在仲裁过程后中断控制器请求ARM920T的FIR或IRQ中断。

S3C2440A中与中断相关的寄存器有:

◆中断源挂起寄存器(SRCPND)

◆中断挂起寄存器(INTPND)

◆中断模式寄存器(INTMOD)

◆中断屏蔽寄存器(INTMSK)

◆中断优先级寄存器(PRIORITY)

S3C2440A中的外部中断在上述中断寄存器的基础上增加了以下寄存器:

◆外部中断控制寄存器(EXTINT0~2)

◆外部中断滤波寄存器(EINTFLT0~3)

◆外部中断屏蔽寄存器(EINTMASK)

◆外部中断挂起寄存器(EINTPEND)

本次实验采用了外部中断EINT0、EINT1、EINT2和EINT4。

下面分析相关寄存器的意义:

中断源挂起寄存器(SRCPND)

该寄存器标志哪个中断源产生中断请求,产生中断请求但未必响应,该寄存器不受中断屏蔽和优先级的影响。

中断处理函数需要将其清零以免重复触发。

下表列出了SRCPND中部分位的意义

中断挂起寄存器(INTPND)

该寄存器标志中断源挂起寄存器(SRCPND)中非屏蔽的且优先级最高的中断,只有一位被标志,该中断将产生IRQ。

中断处理函数中应该将其清零以防止重复触发。

下表列出了INTPND中部分位的意义。

中断模式寄存器(INTMOD)

用于选择中断源属于FIQ还是IRQ,只有一个中断源能够配置为FIQ。

下表列出了INTMOD中部分位的意义。

中断屏蔽寄存器(INTMSK)

该寄存器用于用于屏蔽某些中断。

若某被屏蔽的中断产生了,中断源挂起寄存器(SRCPND)相应的位仍然会被置1,但中断挂起寄存器(INTPND)相应的位不会被置1,该中断也不会被处理。

下表列出了INTMSK中部分位的意义。

外部中断控制寄存器(EXTINT0~2)

外部中断控制寄存器(EXTINT0~2)主要用于配置外部中断的触发方式,触发方式有:

低电平触发、高电平触发、下降沿触发、上升沿触发、双边触发。

下表列出了EXTINT0的部分位的意义。

外部中断屏蔽寄存器(EINTMASK)

外部中断屏蔽寄存器(EINTMASK)用于屏蔽某些外部中断,当其中的位为1时,表示屏蔽对应的中断源。

其部分位的意义如下表所示,本实验只用到其第4位:

外部中断挂起寄存器(EINTPEND)

外部中断挂起寄存器(EINTPEND)用于标志产生中断请求的外部中断源,其各位的意义如下所示。

2.3.3实验仪器与设备

1.TQ2440实验平台

2.J-LINK调试器

2.3.4实验步骤

1.打开实验代码文件夹中的irq_test子文件夹中的工程irq_test.mcp工程

2.阅读代码,单步执行,体会voidKeyScan_Test(void)函数里面对中断相关寄存器的设置方法和意义,了解中断服务函数staticvoid__irqKey_ISR(void)中对相关寄存器的设置方法

3.注意:

要进入中断服务函数,必须全速执行程序,不能单步执行。

因此,可以在中断服务函数staticvoid__irqKey_ISR(void)添加一个断点,然后点击

全速执行程序。

当按下按键后,程序就会停在断点处

4.例程中只给出外部中断0和外部中断4的程序,只能实现对按键K2和K4的检测,仿照对外部中断0的配置,完成对按键K1和K3的检测,写出对外部中断1和2的配置代码还有对LED的控制程序,并进行调试,把代码和现象列入下表中

序号

程序

现象

1

if(rINTPND==BIT_EINT1)

{ClearPending(BIT_EINT1);

}

if(rINTPND==BIT_EINT2)

{ClearPending(BIT_EINT2);

}

检测按键中断并清除相应中断挂起位

2

if((rGPFDAT&(1<<1))==0)

{LED_Control(1,ON);

Delay(1000);

LED_Control(1,OFF);

}

LED1亮1s后熄灭

3

if((rGPFDAT&(1<<2))==0)

{LED_Control(3,ON);

Delay(1000);

LED_Control(4,OFF);

}

LED3亮1s后熄灭

2.3.5实验思考题

比较实验2.2和实验2.3,要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1