实验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 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的输出电路。