




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称:数字信息技术专业实验 实验题目:S3C2440的GPIO实验实验组成员:蒋虎 2013141452147刘砚 2013141452159陈泽 2013141491043陈俊龙 2013141452135陈若虚 2013141452123一、实验目的1、 熟悉ADS1.2+H-Jtag开发环境。2、 掌握S3C2440 GPIO寄存器的配置。3、 掌握LED显示原理,按键触发原理。4、 熟悉C语言编程。5、 掌握ARM寄存器的位操作。二、实验仪器及器件硬件 :EDA试验箱(包括FPGA核心板、单片机、mini2440 ARM开发板)PC主机H-Jtag调试板 软件:ADS1.2(ARM
2、开发工具)ADS是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM结构应用。H-JTAG在线仿真器。 三、实验要求1、课前了解mini2440开发板的原理图。2、通过芯片手册了解mini2440关于GPIO的配置3、理解实验原理4 实验原理1、LED 部分1.1、管脚分配Led通过电源,限流电阻与 ARM 的 I/O 口相连,当 I/O 口为低电平时,电源会通过 led 限流电阻往ARM 里灌电流,点亮 led 。反之 I/O 为高电平时,则 led 不会亮。注意亮灭之间要有一定的延时(大于人眼分辨率大概十几毫秒),以便人眼能够区分出亮灭。Mini2440
3、led 相关原理图如下:我们观察nLED_1,nLED_2,nLED_3,nLED_4分别接在了CPU的GPB5,GPB6,GPB7,GPB8管脚1.2、配置GPIO寄存器打开S3C2440的芯片手册(P284)我们需要做的事情是将GPB5,GPB6,GPB7,GPB8四个管脚设置为输出(在GPBCON寄存器中配置),并且输出低电平(在GPBDAT寄存器中配置)后面的源码中会涉及到这一步。这样LED就可以被点亮。2、按键部分2.1、管脚分配先观察按键部分的原理图发现mini2440的六个按键分别接在S3C2440芯片的GPG0,GPG3,GPG5,GPG6,GPG7,GPG11。2.2、配置G
4、PIO寄存器同LED一样,只是我们的按键的GPIO要设置为输入,如何检测按键是否被按下,很简单,根据原理图可以发现,如果CPU检测到某个引脚为低电平,说明对应的按键被按下。所以我们需要配置GPG0,GPG3,GPG5,GPG6,GPG7,GPG11为输入(在GPGDAT寄存器中配置)。编程检测这几个引脚的电平值(在GPGDAT寄存器中检测)。后面的源码中会涉及到这一步。五、实验内容及步骤 1、H-Jtag配置1.1,将实验箱打开,将H-Jtag小板的一端接入arm开发板的Jtag口,另一端插入电脑的并口。Arm开发板的H-Jtag接口 JTAG调试版 1.2,将arm的S2 拨到nor fla
5、sh启动Arm开发板的启动模式选择开关,可选中nand flash启动和nor flash启动,这里我们选中nor flash启动。1.3,连接电源,拨动arm开发板S1开关,上电。1.4,安装H-jtag代理软件。1.5,打开安装好的H-jtag代理软件 ,做如下设置。321这一步会出现无法找到器件,忽略该错误。1.6打开Setting->LPT Jtag Setting做如下设置3211.7,设置Init Script214354这样我们的H-Jtag设置就全部完成啦!1.8,配置完成后,检测CPU点主菜单Operations(或control)->Detect Target这
6、样我们的H-jtag就识别出了我们的ARM920T注意,如果没有出现这个画面,可能有如下错误容易被忽略:1),没有上电。2),S2没有拨到nor flash启动。3),不使用并口扩展线再试一次。2 使用ADS1.2仿真工具3,使用HJTAG进行代码调试实验要求:记录实验现象。以同样的方式,执行Led_2,并观察现象。提示:每次关闭Code Warrior或新建工程都需要点Edit菜单,选择“DebugRel Setting”进行重新配置,为节省时间,可以直接在前一个工程的.mcp界面,选择之前的所有文件,然后删除,并将新工程的相关文件添加进去,此时只需重新make 和 debug就
7、行了。(其实由于功能简单,其实只需要替换main.c函数就行,其他函数都一样)Led_1:LED14先依次点亮,然后熄灭,接着全亮,熄灭;此后重复此过程。Led_2:K1K4按下,分别只点亮LED14,其他熄灭。4,源码分析源码1 (led_1):流水灯实验。该实验主要需要掌握GPIO寄存器的配置,以及LED等显示原理system和uart源文件主要是对s3c2440的一系列初始化,包括管看门狗,初始化内存,初始化时钟,以及初始化串口。这里暂时不去深究。我主要分析main.c/* 定义两个寄存器的地址 */* 参考芯片手册P284 */#define GPBCON (*(volatile un
8、signed long *)0x56000010)#define GPBDAT (*(volatile unsigned long *)0x56000014)/* 注意掌握C语言对指定地址进行读写的方法 */* 初始化led */void led_init(void) /* 设置GPB5,6,7,8为输出,参考芯片手册P284 */GPBCON &= (0x3ff << 10);GPBCON |= (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);/* 这个函数可以点亮LED灯,参数n
9、是用来选择点亮那盏灯,取值范围为1到4 */void led_on(int n) /* 先判断参数是否正确 */if(n <= 0 && n >= 5) return;n += 4;/* 向GPBDAT的5(6,7,8)位写入0,这样CPU的GPB5(GPB6,GPB7,GPB8)就可以输出低电平,从而点亮对应的LED灯 */GPBDAT &= (0x1 << n);/* 这个函数可以关闭LED,结构和原理同led_on一样 */void led_off(int n) if(n <= 0 && n >= 5) retu
10、rn;n += 4;GPBDAT |= (0x1 << n);/* 点亮所有的LED */void all_leds_on(void) GPBDAT &= (0xf << 5);/* 关闭所有的LED */void all_leds_off(void) GPBDAT |= (0xf << 5);/* 延时函数 */void delays(int time)unsigned int i,j;for (i = time; i > 0; i-)for (j = 1000; j > 0; j-);/* 主函数入口 */int Main()int
11、n;led_init();while(1) /* 关闭所有的LED */all_leds_off();/* 依次点亮LED */for(n = 1; n <= 5; n+) led_on(n);/* 延时 */delays(1000);all_leds_off();delays(1000);/* 点亮所有LED */all_leds_on();delays(1000); return 0;源码2 (led_2):按键控制LED。分析led_2的mian.c 发现中间多了对按键的初始化./* 定义寄存器地址 */#define GPBCON (*(volatile unsigned lon
12、g *)0x56000010)#define GPBDAT (*(volatile unsigned long *)0x56000014)#define GPGCON (*(volatile unsigned long *)0x56000060)#define GPGDAT (*(volatile unsigned long *)0x56000064)/* 初始化按键 */Void buttons_init() /* 设置GPG0,3,5,6 为输入*/GPGCON &= (0x3 << 0) | (0x3 << 6) | (0x3 << 10) |
13、 (0x3 << 12);/* 查询法检测按键是否被按下 */* 返回值 0: 按下, 1: 未按下 -1: 参数错误 */int is_button_pressed(int n) switch(n) case 1:return (1 << 0) & (GPGDAT);break;case 2:return (1 << 3) & (GPGDAT);break;case 3: return (1 << 5) & (GPGDAT);break;case 4: return (1 << 6) & (GPGDA
14、T);break;default:return -1;int Main()int n;all_leds_off();/* 初始化led */leds_init();/* 初始化buttons */buttons_init();while(1) for(n = 1; n < 5; n +) if (!is_button_pressed(n) /* 有按键按下 */all_leds_off();/* 点亮相应的灯 */led_on(n); return 0;源码3 (led_3):本节课要求基本要求:在led1的基础上,修改程序使LED灯以二进制递增的方式点亮;拓展要求:在基本要求的基础上,
15、增加一个按键可以控制led亮灭的暂停及者继续。已经拓展了功能(添加按键控制LED亮灭的暂停与继续)的代码如下:#include "2440addr.h"#include "2440lib.h"#include "option.h"#include "def.h"#include "uart.h"#define GPBCON (*(volatile unsigned long *)0x56000010)#define GPBDAT (*(volatile unsigned long *)0x560
16、00014)#define GPGCON (*(volatile unsigned long *)0x56000060)#define GPGDAT (*(volatile unsigned long *)0x56000064)void buttons_init() /* 设置GPG0,3,5,6 为输入*/GPGCON &= (0x3 << 0) | (0x3 << 6) | (0x3 << 10) | (0x3 << 12);/按键初始化/* 初始化led */void led_init(void) /* 设置GPB5,6,7,8为输
17、出 */GPBCON &= (0x3ff << 10);GPBCON |= (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);/* 返回值 0: 按下, 1: 未按下 -1: 参数错误 */int is_button_pressed(int n) switch(n) case 1:return (1 << 0) & (GPGDAT);break;case 2:return (1 << 3) & (GPGDAT);break;default:ret
18、urn -1;void all_leds_on(void) GPBDAT &= (0xf << 5);void all_leds_off(void) GPBDAT |= (0xf << 5);void delays(int time)unsigned int i,j;for (i = time; i > 0; i-)for (j = 1000; j > 0; j-);int Main()int n;led_init();buttons_init();while(1) /* 关闭所有的LED */all_leds_off(); delays(1000);for(n = 1; n <= 14; n+) GPBDAT-=(0x1 << 5);/* 延时 */delays(1000);if (!is_button_pressed(1) while(1) if(!is_button_pressed(2) break; /* 点亮所有LED */all_leds_on();delays(1000); return 0;六、实验结果分析实现现象:实验一:这些灯开始时都是熄灭的,首先LED1被点亮,然后LED2与LED1均被点亮,紧接着LE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CNCA 053-2023矿用管路抓举车通用技术条件
- T/CI 453-2024饲用谷子种植技术规程
- T/CGAS 031-2024城镇燃气加臭技术要求
- 上海护士招聘试题及答案
- T/CAS 850-2024燃气用滚压螺纹热镀锌钢管技术规范
- FIDIC业主咨询工程师标准服务协议书条件白皮书5篇
- 三方债权债务的抵销协议3篇
- 净身出户的离婚协议范文5篇
- 运输化学危险品协议4篇
- 自来水 厂运维合同模板3篇
- 中心静脉导管相关血流感染课件
- 风湿免疫疾病的患者教育和自我管理
- 《冷凝器设计》课件
- PDF-规范标准资料
- (完整PPT)上海英文介绍
- 2025年日历日程表含农历可打印
- 锐意进取开拓新市场
- 《电力工程电缆设计规范》
- 人工挖孔桩计算书及相关图纸
- 穿脱隔离衣操作考核评分标准
- 吉林省工程竣工验收报告
评论
0/150
提交评论