实验1输入输出实验

  • 格式:pdf
  • 大小:270.84 KB
  • 文档页数:5

实验 1 输入输出实验

一、实验目的

1. 掌握ARM的通用输入输出接口工作原理。

2. 学习编程实现GPIO的方法,掌握I/0的功能复用,并能熟练的配置。

二、实验内容

1. 通过按键输入开关量。

2. 在实验箱的主板上点亮LED灯LED1、LED2和LED3(分别接GPC5、GPC6和GPC7),

并轮流闪烁。

三、预备知识

1. 用EWARM集成开发环境,编写和调试程序的基本过程。

2. ARM应用程序的框架结构。

3. 了解GPIO。

四、实验设备及工具

硬件:ARM嵌入式开发平台,PC机,JTAG仿真器。

软件:操作系统WindowsXP/7,EWARM集成开发环境,仿真器驱动程序,超级终端

通讯程序。

五、实验原理及说明

编写程序,当用户在实验箱上按下“INTKEY”键时,在中断服务子程序中将相关信息打

印到串口中,并显示在超级终端上。

1. 上拉电阻和下拉电阻

上拉就是将不确定的信号通过一个电阻箝位在高电平,电阻同时起限流作用,下拉同理;

上拉是对器件注入电流,下拉是输出电流。

1) 一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发

的状态或是触发后回到原状态,必须在IC外部另接一电阻。

2) 数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现

高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定。

3) I/O端口驱动有的可以设置,有的不可以设置,有的是内置,有的是需要外接。I/O

端口的输出通过一个电阻和电源连接在一起的时候,该电阻成为上拉电阻,也就是说,如果

该端口正常时为高电平。通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平。当一个接有上拉电阻的端口设为输入状态时,它的常态就为高电平,用

于检测低电平的输入。

4) 上拉电阻是用来解决总线驱动能力不足时提供电流的,是拉电流;下拉电阻是用

来吸收电流的,也就是我们通常所说的灌电流。

5) 接电组就是为了防止输入端悬空。

6) 减弱外部电流对芯片产生的干扰。

7) 保护CMOS内的保护二极管,一般电流不大于10mA。

8) 通过上拉或下拉来增加或减小驱动电流。

9) 改变电平的电位,常用在TTL-CMOS 匹配。

10) 在引脚悬空时有确定的状态。

11) 增加高电平输出时的驱动能力。

12) 为OC门提供电流。

2. “INTKEY”键工作原理

上拉电阻就是把不确定的信号通过一个电阻箝位在高电平,此电阻还起到限流的作用。

同理,下拉电阻是把不确定的信号箝位在低电平。上拉电阻是指器件的输入电流,而下拉指

的是输出电流。

如果按键短路(按下)电阻为零,按键按下,EINT5=0;当按键断开,EINT5悬空输出

等于VDD3.3。这个VDD3.3就是靠R6“上拉”产生的,顾名思义,R6就是上拉电阻。上拉

电阻的大小,取决于输出接负载的需要,通常逻辑电路对高电平输出阻抗很大,要求输出

电流很小,在上拉电阻上压降可以忽略,当然上拉电阻不能太大,否则就不能忽略了。

3. LED发光原理

实验平台中设计了3个LED,这3个LDE可以编程控制。

图3.1按键产生中断信号的原理

基础知识:二极管具有正向导通,反向截止的特点,LED导通时发光,截止时熄灭。

对于不同结构的LED,编程时CPU的输出电平有不同要求,如果要保证CPU的输出电平

不变,则需要外围电路修正电平,使LED达到设计要求。

4. 参考程序

#include #define KEY1 (1<<5) //GPF5输入

#define LED1 (1<<5) //GPC5,LED1灯

#define LED2 (1<<6) //GPC6,LED2灯

#define LED3 (1<<7) //GPC7,LED3灯

#define READ_KEY(x) (rGPFDAT & (x)) //读出GPF的某一位的值

#define TURN_ON(x) (rGPCDAT &= ~(x)) //置低电平

#define TURN_OFF_LEDS (rGPCDAT |= LED1 | LED2 | LED3 ) //置高电平

#define TURN_ON_LEDS (rGPCDAT &= ~(LED1 | LED2 | LED3 )) //置低电平

void ARMTargetInit(void); void Key_led_init(void) //GPIO初始化

{ rGPCCON |= (1<<10) | (1<<12) | (1<<14) ; //配置寄存器,用作输出

rGPCUP &= ~( (1<< 5) | (1<< 6) | (1<< 7) ) ; //上拉寄存器,用作上拉

TURN_OFF_LEDS; //关闭所有的LED

rGPFCON &= ~ (3<<10) ; //配置寄存器,用作输入

rGPFUP &= ~ (1<< 5) ; //上拉寄存器,用作上拉

} void Key_scan(void) { if (READ_KEY(KEY1) == 0) //按键被按下

{ TURN_ON(LED1); TURN_ON(LED2); TURN_ON(LED3); } else //按键没有按下

TURN_OFF_LEDS; } int main(void) { ARMTargetInit(); //ARM初始化

Key_led_init(); //GPIO初始化

while (1) { Key_scan(); //论询 图3.2 三个

LED } }

六、实验步骤

1. 启动EWARM开发环境。

2. 新建或打开工程(workspace),输入程序,编译链接。

3. 连接仿真器。

4. 嵌入式系统电路上电。

5. 在线调试。

七、思考题

1. 在GPIO接口中,上拉电阻的作用?

2. 画出GPIO的输入电路。

3. 画出GPIO的输出电路。