嵌入式实验报告

合集下载

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告在本学期的嵌入式系统课程中,我与我的实验伙伴进行了多次实验。

在这篇报告中,我将分享我们实验的过程和结果。

实验一:GPIO控制LED灯在这个实验中,我们使用了Raspberry Pi 3B+开发板和一根杜邦线。

我们在电路板上将一盏LED灯与GPIO引脚连接起来,并编写了一个程序来控制这个引脚的电平状态。

在这个实验中,我们学习了GPIO的基本概念以及如何使用Python编程语言编写GPIO控制程序。

我们成功地让LED灯在不同的时间间隔内闪烁,并且了解了如何使用GPIO.setup()和GPIO.output()函数来控制GPIO引脚的输入和输出。

实验二:串口通信在第二个实验中,我们使用了两个Raspberry Pi 3B+开发板和两根串口线。

我们连接了两个板子的GPIO引脚,使得它们可以通过串口进行通信。

我们使用Python编写了两个程序来进行通信。

一个程序将发送一条消息,另一个程序将接收这个消息并将其打印出来。

通过使用串口通信,我们学会了如何使用Python编写程序来完成数据交换,并掌握了串口通信的基本概念。

实验三:Pi camera模块在第三个实验中,我们使用了Pi camera模块和一个Raspberry Pi 3B+开发板。

我们将摄像头连接到开发板上,并编写了一个程序来捕捉摄像头图像。

我们学习了如何使用Python编程语言来控制Pi camera模块,包括如何设置摄像头参数并如何捕捉静态图像。

我们还尝试了使用OpenCV库来处理图像。

实验四:蓝牙控制在最后一个实验中,我们使用了一个蓝牙透传模块、Raspberry Pi 3B+开发板和一些电路元件。

我们将蓝牙透传模块连接到GPIO引脚,并编写了一个程序来通过蓝牙信号控制电机。

在这个实验中,我们学习了如何使用蓝牙模块进行无线控制。

我们通过使用Python编写控制程序,成功地将蓝牙信号转换成GPIO引脚的电平信号来控制电机。

总结在这个嵌入式系统的实验中,我们学习了许多关于嵌入式系统的知识和技能。

嵌入式实训报告报告

嵌入式实训报告报告

一、实训背景随着科技的飞速发展,嵌入式系统在各个领域得到了广泛应用。

为了提高自己的实践能力和综合素质,我参加了本次嵌入式实训。

通过实训,我对嵌入式系统有了更深入的了解,并掌握了嵌入式系统的开发流程和相关技术。

二、实训目的1. 掌握嵌入式系统的基本原理和开发流程;2. 熟悉嵌入式开发工具和环境;3. 提高动手实践能力,培养团队协作精神;4. 为以后从事嵌入式系统相关工作打下基础。

三、实训内容1. 嵌入式系统概述嵌入式系统是一种将计算机硬件和软件集成在一起的专用系统,具有实时性、高可靠性、低功耗等特点。

本次实训主要针对ARM架构的嵌入式系统进行学习。

2. 嵌入式开发环境搭建(1)硬件环境:选用STM32F103系列单片机作为开发平台。

(2)软件环境:使用Keil MDK作为集成开发环境(IDE),并安装必要的驱动程序。

3. 嵌入式系统编程(1)C语言编程:学习C语言的基本语法、数据类型、控制结构、函数等,掌握嵌入式系统编程基础。

(2)裸机编程:编写简单的裸机程序,实现单片机的GPIO、定时器、中断等功能。

(3)嵌入式操作系统:学习FreeRTOS操作系统,掌握任务创建、调度、同步等基本功能。

4. 嵌入式系统项目实践(1)设计一个基于STM32F103的单片机温度控制系统,实现温度的实时监测和控制。

(2)设计一个基于ARM Cortex-M4的智能家居系统,实现家电的远程控制和状态监测。

四、实训过程1. 理论学习:通过查阅资料、阅读教材,了解嵌入式系统的基本原理和开发流程。

2. 环境搭建:按照实训要求,配置开发环境,安装必要的驱动程序。

3. 编程实践:按照实训指导书,编写程序,实现单片机的各项功能。

4. 项目实践:根据项目要求,设计并实现嵌入式系统项目。

5. 总结与反思:对实训过程进行总结,分析自己在实训过程中遇到的问题及解决方法。

五、实训收获与体会1. 理论知识与实践相结合:通过本次实训,将所学的理论知识应用于实际项目中,提高了自己的动手实践能力。

嵌入式实验四实验报告

嵌入式实验四实验报告

嵌入式实验四实验报告实验四:嵌入式编程设计
实验设计目的:
1. 学习使用嵌入式开发工具进行编程设计;
2. 学习使用C语言编写嵌入式程序;
3. 学习使用GPIO模块进行输入输出;
4. 学习使用中断处理函数。

实验器材:
1. 嵌入式开发板;
2. USB数据线;
3. 电脑;
4. LED灯;
5. 电阻;
6. 蜂鸣器;
7. 其他必要的电路元件。

实验步骤:
1. 连接开发板和计算机,安装开发板驱动程序;
2. 打开嵌入式开发工具,创建一个新的工程;
3. 在工程中添加一个C文件,编写程序;
4. 编写程序实现以下功能:
- 使用GPIO模块控制LED灯的亮、灭;
- 使用GPIO模块读取按键状态;
- 使用GPIO模块控制蜂鸣器的开、关;
- 使用Timer模块计时;
- 使用中断处理函数处理外部中断;
- 其他必要的功能;
5. 编译程序,下载到开发板;
6. 运行程序,测试功能是否正常。

实验结果与分析:
实验结果应当是LED灯、蜂鸣器、按键正常工作,可以通过按键控制LED灯的亮、灭、蜂鸣器的开、关。

实验总结:
通过本次实验,我学会了使用嵌入式开发工具进行编程设计,掌握了使用C语言编写
嵌入式程序的方法。

通过实验,我深入理解了嵌入式系统的原理和实现方法,对嵌入
式系统的应用有了更加深入的了解。

在今后的学习和工作中,我将能够更好地运用嵌
入式技术解决实际问题。

嵌入式报告实验报告

嵌入式报告实验报告

嵌入式报告实验报告1. 引言嵌入式系统作为一种特殊的计算机系统,应用广泛且日益重要。

嵌入式报告实验是对嵌入式系统进行实际操作和测试的过程,旨在验证嵌入式系统的功能和性能,以评估其是否满足设计要求。

本报告将详细介绍嵌入式报告实验的设计与实施,并对实验结果进行分析与总结。

2. 实验设计2.1 实验目的嵌入式报告实验的目的是通过设计和实施一系列测试来评估嵌入式系统的性能和功能。

具体目标包括但不限于:验证系统的实时性、稳定性和可靠性;测试系统的各种输入输出功能;评估系统对异常情况的处理能力。

2.2 实验环境实验使用的嵌入式系统硬件为XX处理器,集成了XX模块和XX接口。

软件方面,使用XX嵌入式操作系统和XX开发工具进行系统开发和测试。

2.3 实验步骤1) 配置硬件环境:将嵌入式系统与外部设备连接,确保硬件环境正常。

2) 编写测试程序:根据实验目标,编写相应的测试程序,包括输入输出测试、性能测试和异常情况测试等。

3) 软件调试:通过软件调试工具对测试程序进行调试,确保程序逻辑正确。

4) 硬件调试:通过硬件调试工具对嵌入式系统进行调试,确保硬件模块正常工作。

5) 实验运行:将测试程序下载到嵌入式系统中,运行测试程序并记录实验数据。

6) 数据分析与总结:对实验数据进行分析和总结,评估嵌入式系统的性能和功能是否满足设计要求。

3. 实验结果与分析3.1 输入输出测试通过设计一系列输入输出测试用例,测试嵌入式系统的输入输出功能。

测试包括但不限于:按键输入、传感器数据采集、外部设备通信等。

实验结果表明,嵌入式系统的输入输出功能正常,能够准确获取和处理各种输入信号,并成功输出相应的结果。

3.2 性能测试通过设计一系列性能测试用例,测试嵌入式系统的处理能力和实时性。

测试包括但不限于:任务切换速度、响应时间、系统负载等。

实验结果表明,嵌入式系统具有较高的处理能力和实时性,能够快速响应各种任务并保持系统的稳定性。

3.3 异常情况测试通过设计一系列异常情况测试用例,测试嵌入式系统对异常情况的处理能力。

嵌入式实训课实验报告

嵌入式实训课实验报告

一、实验背景嵌入式系统在现代工业、消费电子、智能家居等领域扮演着越来越重要的角色。

为了让学生深入了解嵌入式系统的设计原理和开发过程,提高学生的实践能力和创新精神,我们开设了嵌入式实训课程。

本次实验报告将针对实训课程中的部分实验进行总结和分析。

二、实验目的1. 掌握嵌入式系统的基本原理和开发流程。

2. 熟悉嵌入式开发工具和环境。

3. 熟练使用C语言进行嵌入式编程。

4. 学会调试和优化嵌入式程序。

三、实验内容本次实训课程共安排了五个实验,以下是每个实验的具体内容和实验步骤:实验一:使用NeoPixel库控制RGB LED灯带1. 实验目的:学习使用NeoPixel库控制RGB LED灯带,实现循环显示不同颜色。

2. 实验步骤:(1)搭建实验平台,连接NeoPixel LED灯带。

(2)编写程序,初始化NeoPixel库,设置LED灯带模式。

(3)通过循环,控制LED灯带显示不同的颜色。

实验二:使用tm1637库控制数码管显示器1. 实验目的:学习使用tm1637库控制数码管显示器,显示数字、十六进制数、温度值以及字符串,并实现字符串滚动显示和倒计时功能。

2. 实验步骤:(1)搭建实验平台,连接tm1637数码管显示器。

(2)编写程序,初始化tm1637库,设置显示模式。

(3)编写函数,实现数字、十六进制数、温度值的显示。

(4)编写函数,实现字符串滚动显示和倒计时功能。

实验三:使用ds18x20库和onewire库读取DS18B20温度传感器的数据1. 实验目的:学习使用ds18x20库和onewire库读取DS18B20温度传感器的数据,并输出温度值。

2. 实验步骤:(1)搭建实验平台,连接DS18B20温度传感器。

(2)编写程序,初始化ds18x20库和onewire库。

(3)编写函数,读取温度传感器的数据,并输出温度值。

实验四:使用ESP32开发板连接手机热点,并实现LED1作为连接指示灯1. 实验目的:学习使用ESP32开发板连接手机热点,并通过LED1指示灯显示连接状态。

嵌入式系统试验报告

嵌入式系统试验报告

嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。

二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。

A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。

引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。

注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。

2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。

当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。

三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。

嵌入式实训报告范文2篇2

嵌入式实训报告范文2篇2

嵌入式实训报告范文 (2)嵌入式实训报告范文 (2)精选2篇(一)嵌入式实训报告一、实训背景嵌入式系统是一种以具体任务为中心,集成了硬件与软件的计算机系统。

由于其体积小、功耗低、功能强大等特点,嵌入式系统被广泛应用于各个领域,如家电、汽车、医疗等。

通过参与嵌入式实训,我希望能够掌握嵌入式开发的基本原理和方法,提高自己的实践能力。

二、实训目标1.掌握嵌入式系统的基本知识和开发工具的使用;2.了解嵌入式系统的硬件架构和软件设计流程;3.能够根据需求设计并实现简单的嵌入式系统。

三、实训内容1.学习嵌入式系统基础知识:通过课堂教学和自主学习,了解了嵌入式系统的概念、特点及应用领域。

深入学习了ARM架构和C语言的基本知识,并进行了相应的实践操作。

2.学习嵌入式开发工具的使用:学习了Keil MDK和IAR Embedded Workbench等常用的嵌入式开发工具的安装和配置方法。

通过实操操作,掌握了调试、编译、下载等基本功能的使用。

3.学习嵌入式系统设计流程:了解了嵌入式软件开发的常用流程,包括需求分析、系统设计、编码实现、调试测试、系统验证等。

通过案例分析和实践操作,对嵌入式系统设计流程有了更深入的了解。

4.设计并实现简单的嵌入式系统:根据实训要求,我选择了一个简单的嵌入式系统项目,通过分析需求、设计系统架构、编写软件代码、调试测试等环节,最终成功完成了项目。

四、实训总结及收获通过参与嵌入式实训,我不仅掌握了嵌入式系统的基本知识和开发工具的使用,还锻炼了自己的实践能力。

我深刻认识到嵌入式系统开发需要全面的知识储备和较高的技术水平,同时也需要良好的分析、设计和沟通能力。

通过实训,我对嵌入式系统开发流程有了更深入的理解,对嵌入式系统的设计和开发也有了更高的认识和要求。

在未来的学习和工作中,我会继续深入学习嵌入式系统开发相关知识,并不断提高自己的实践能力。

嵌入式系统是未来的发展方向,通过不断探索和实践,我相信我能够在这个领域取得更好的成果。

嵌入式实训报告范文2篇

嵌入式实训报告范文2篇

嵌入式实训报告范文嵌入式实训报告范文精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式实训的目的是通过设计和实现一个嵌入式系统,培养学生的嵌入式系统开发才能和团队协作才能。

本次实训的背景是为了满足社会对嵌入式系统开发人才的需求,进步学生的实际动手才能。

二、实训内容1. 硬件平台的选择和搭建:选择了一款ARM开发板作为硬件平台,并搭建了相应的开发环境。

2. 系统设计和分析:根据实训要求,我们团队设计了一个智能门锁系统,包括用户认证、门锁控制和远程监控功能。

3. 软件开发:使用C语言和嵌入式开发工具进展软件开发,实现了用户认证、门锁控制和远程监控等功能。

4. 硬件连接和调试:将开发板和相关传感器、执行器等硬件设备进展连接和调试,确保系统可以正常运行。

5. 功能测试和调优:对系统进展全面测试,发现并修复了一些问题,并对系统进展了性能优化。

三、实训心得和体会通过本次实训,我深入认识到嵌入式系统开发的复杂性和挑战性。

在实训过程中,我们团队遇到了许多问题,比方硬件和软件的兼容性、性能优化等方面。

但是通过团队的努力和合作,我们成功解决了这些问题,并完成了一个功能完善的嵌入式系统。

此外,我还学到了许多软件开发和硬件调试的技巧,进步了自己的实际动手才能。

在团队协作方面,我们团队成员之间互相配合,共同解决问题,形成了良好的协作机制。

总结起来,本次嵌入式实训让我受益匪浅,学会了许多实际应用的技能和知识,并进步了自身的综合才能。

四、实训成果展示在实训完毕后,我们团队成功完成了一个智能门锁系统,具备用户认证、门锁控制和远程监控等功能。

系统的稳定性和可靠性得到了验证,并且在实际使用中得到了积极的反应。

附图:〔展示系统界面、硬件设备连接示意图等〕五、实训改良意见尽管本次实训获得了良好的成果,但仍有一些方面需要改良。

首先,实训的时间安排可以更合理一些,以便更充分地利用时间进展理论操作。

其次,可以增加一些真实场景的案例分析和解决方案的设计,以提升学生的实际应用才能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南华大学实验名称:设计和实现一个KED&LED驱动学院:计算机学院专业班级:本2010 计算机01班学号:20104440115姓名:谢志兴同组人:孟令敏、周方沛、陈洋铂指导教师:陈灵娜日期:2012 年12 月 5 日实验名称设计和实现一个KED&LED驱动一、实验目的1.了解Linux虚拟机的使用和配置。

2.了解H-JTAG的配置和使用3.了解UP-Start2410的安装和使用4.熟悉使用XSBase255的Boot Loader指令5.了解ARM设备外围电路结构域接口原理。

6.编程实现对嵌入式设备上的LED灯的控制。

二、实验仪器1、装有Linux操作系统的PC机一台;2、UP-Start2410设备一套三、实验步骤1.Linux虚拟机的配置1)Linux网络配置:输入用户名root,密码123456进入如下画面后就可以搭建我们的开发环境了。

从进入-> 系统设置-> 网络(进入如图 1 所示位置)图1双击进入图2位置,如红色区域配置地址,子网掩码,默认网关地址;注意地址要和我们的windows 的地址在同一网段(即前3段相同如192.168.1.X 与192.168.1.XX 就是在同一个网段),但是不能冲突(即第4位相同)。

然后点击确定图22)配置DNS:此时我们已经返回到图1的界面,点击“DNS”进行DNS配置,DNS通常都是默认为如图3所示的情形图3此时如果网络没有激活,我们可以双击图中的“激活”来激活,如图4所示图4打开浏览器,如图5所示图53)配置Samba服务器:如下图找到Samba 服务器点击进入Samba 服务器配置,里面有一个我们已经配置好的目录,我们也可以点增加来自行选择共享目录,这个我们后面会讲到4)配置网络:如下图所示点击“网络”进入如下界面双击进入下图所示的位置,和配置Linux虚拟机上网的配置相同,如果需要修改Ip在下图里修改,然后点确定,路由和硬件设备默认的即可。

以下两幅图是路由和硬件设备默认的情况5)配置服务:如下图所示找到“服务”双击进入将iptables服务勾掉,并确保httpd ,nfs,smb选项选中。

6)新建共享目录:双击图标或右键-> 新建终端,如下图所示新建一个目录作为共享目录或找到已有目录看一下路径然后我们再回到Samba服务器配置,下面的步骤和NFS服务的配置类似。

点“增加”点“浏览”,找到我们要共享的目录。

选中共享目录后双击,是进入了该目录,然后点确定就会进入到下图所示的状态。

../ 是进入到上级目录这里我们要注意:目录的内容我们最好是通过浏览来获得,不要手动去输入。

描述的内容是输入我们共享的范围,假设输入192.168.1.* 就是把该目录共享给IP 为192.168.1.2-192.168.1.1.254之间的所有用户。

基本权限:一般选读/写点“访问”这个就是设定访问用户的权限,通常选“允许所有用户访问“,然后点“确定”。

此时我们已经共享成功,如下图所示同时按下Ctrl 和Alt 键把我们的鼠标切到Windows下,打开任意一个文件夹,在地址栏输入:\\192.168.1.234 也就是我们的虚拟机的IP地址,然后回车会有如下窗口弹出输入用户名bc ,密码123456 然后确定此时我们就可以成功在Windows下访问我们的虚拟机了。

可以直接双击进入我们的共享文件夹这里需要注意的是:我们自己共享的gx目录可能有些权限不够,我们还是主要用bc 这个目录。

我们可以把我们要放到虚拟机上的文件直接拖到bc 这个目录里面即可。

7)宿主机和目标机通信:找到“NFS服务器”,如下图所示点“增加”找到我们要共享的gx目录选中后“确定”,主机填“* ”,基本权限选“读/写”常规选项的配置,如下如所示用户访问的配置,如下如所示确定后我们的NFS配置就基本可以了我们的另一个Linux 系统也就是我们的实验平台,首先打开实验平台,这个实验指导书里有详细的说明。

ifconfig eth0 192.168.1.115inetdmount –t nfs –o nolock 192.168.1.234:/gx/ /hostcd /hostls此时就成功实现虚拟机和实验平台之间的通讯了,如下图所示。

2.H-JT AJ的安装1)H-JTAG 安装文件位于光盘的“Wi ndows 平台工具\H-JTAG”目录,双击运行,按照其提示安装即可。

2)安装完毕后的如下图:3)进行端口配置:(按照下面的图设置)4)使用UP-LINK 接通开发板和主机,开启电源。

在H-JTAG Server 窗口中选择Operations> Detect Target 应该能够侦测目标板上的ARM 7~10 内核如下图,如侦测不到请检测上述步骤。

5)设置初始化脚本6)检测目标器件使用开发板附带的JTAG 小板连接开发板的JTAG 接口,并接上打开电源。

点主菜单Operations->Detect Target,或者点工具栏相应的图标也可以,这时就可以看到已经检测到目标器件了。

3.UP-Start2410的安装:硬件实物如图:1)并口驱动安装首先,将并口线连接到我们的PC机上,另一端连接到我们提供的JTAG再将JTAG 连接到板子上的14针接口上。

然后把附带光盘中LINUX部分下的tools文件夹中的整个GIVEIO文件夹拷贝到C:\WINDOWS下,并把该目录下的giveio.sys 文件拷贝到C:\WINDOWS\system32\drivers下。

接着在控制面板里,选添加硬件如下图。

2)点击下一步,选择“是,我已经连接了此硬件”3)单击下一步,选中“添加新的硬件设备”4)点击下一步,选择“安装我手动从列表选择的硬件”5)单击下一步,选择显示所有设备6)选择从磁盘安装如图:7)指定驱动为C:\WINDOWS\GIVEIO\giveio.inf文件,点击确定8)按照提示单击“下一步”完成安装。

4.BootLoader 的烧写:1)烧写的方法与2410相同,不同的只是以前的文件是vivi ,现在的文件是 u-boot.bin,该文件在光盘的img 文件夹下。

点击“开始”中的“运行”输入cmd ,找到sjf2410-s.exe 所在文件夹的路径,输入sjf2410-s.exe /f:u-boot.bin 回车。

进入烧写界面,如下图。

界面会显示CPU 的ID :0x0032409d2)选择烧写的位置为“0”4)屏幕出现Epppp…表示正在烧写BootLoader5)配置超级终端6)烧写完成后重启开发板,烧写成功如下图提示信息:5.驱动操作分析及函数设计:通过设计实现一个KED&LED驱动程序,来控制目标板上的一组LED灯,针对此字符设备需设计以下接口函数:lednkey_open()、lednkey_write()、lednkey_read()、lednkey_release()、lednkey_ioctl;6.驱动代码烧写:1)将编写好的驱动程序代码进行编译用 arm-linux-gcc -c -o keypad.o keypad.c生成对应的.o目标文件,可以用I来指定路径。

2)通过insmod的方式加载到内核。

在Minicom中使用ZMODEM协议发送文件:运行配置好的Minicom,首先按下ctrl-a,然后按下s,选择ZMODEM协议,回车。

最后选择发送的文件,回车发送。

使用insmod -f xsbase.o 命令将驱动程序加入内核。

在/process/devices 文件中可以找到运行的设备。

四、实验结果实验结果包含在过程中五、实验分析总结通过本次实验,我获益匪浅,具体有以下几点:1.本次实验,让我基本了解了Linux虚拟机的使用和配置。

2.本次实验,让我基本了解了H-JTAG的配置和使用3.本次实验,让我基本了解了UP-Start2410的安装和使用4.本次实验,让我基本熟悉了怎样使用XSBase255的Boot Loader指令5.本次实验,让我基本了解了ARM设备外围电路结构域接口原理。

6.本次实验,让我深刻的认识到了嵌入式开发环境的建立并非一件很容易做到的事;7.本次实验,让我知道了要做一个项目之前,有很多准备工作要做,不做好,以后的操作就会很麻烦,而且会出错,总是运行不出来,会打击自信心。

8.本次实验,让我明白了,打好基础,是多么的重要,看代码也不需要一一查找了;9.本次实验,让我明白了,一个团队的力量是多么的强大,即是你的队友只有一位;10.本次实验,让我学会了细心做事,坦诚做人,不懂就要懂的问别人或老师;11.本次实验,让我感觉到了做好一件事是多么的开心,对生活也充满了信心附录:(代码)文件名为“Keypad.c”的代码如下:#include <linux/module.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/poll.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/rtc.h>#include <linux/delay.h>#include <asm/hardware.h>#include <asm/delay.h>#define LEDnKEY_MAJOR 251#define KEYPAD_NAME "XSBase 255 Keypad"#define KEYPAD_VERSION "Version 0.1"#define EXT_KEY_CS EXT_PORT2#define EXT_LED_CS EXT_PORT3#define LED_SHOW 10void led_off_on(){int i;EXT_LED_CS=oxff;for(i=0,i<8,++i){EXT _LED_CS=~((1<<I)& oxff);udelay(30000);}EXT_LED_CS=oxff;}//open接口函数int lednkey_open(struct inode *inode,struct file *filp){MOD_INC_USE_COUNT;return 0;}//release接口函数int lednkey_release(struct inode *inode,struct file *filp){led_off_on();MOD_DEC_USE_COUNT;return 0;}ssize_t lednkey_read(struct file *filp,char *putbuf,size_t length,{unsigned short BottonStatus;unsigned char Bottontmp=0;int i;BottonStatus=(EXT_KEY_CS & oxff);//BottonStatus表示了当前8个Key的状态for(i=0;i<8;++i){if(((BottonStatus>>i)& 1) ==0)Bottontem=(i+1);}copy_to_user(putbuf,&Boottontem,length);return length;}ssize _t lednkey_write(struct file *filp,char,const char *Getbuf,size_t length,loff_t *f_pos){int num;unsigned char UsrWantLed;//将用户空间写入到设备文件的内容传送到内核空间copy_from_user(&UsrWantLed,Getbuf,length);num=((UsrWantLed)&0xff);EXT_LED_CS=~(1<<(num-1));return 0;}//控制函数接口int lednkey_ioctl(struct inode*inode,struct file*filp,unsigned int cmd,unsigned long arg){switch(cmd){case LED_SHOW:{if(arg)led_off_on();break;}}return 0;}//注册函数struct file_operations lenkey_fops={open: lednkey_open,read: lednkey_read,write: lednkey_write,ioctl: lednkey_ioctl,release: lednkey_release,};//模块的注册和注销函数static int _init xsbase255-keypad_init(void){int result;result=register_chrdev(LEDnKEY_MAJOR,"lednkey",&lednkey_fops);printk("&s &s initialized.\n",KEYPAD_NAME,KEYPAD_VERSION);led_off_on();return 0;}static void _exit xsbase255_keypad_exit(void){unregister_chrdev(LEDnKEY_MAJOR,"lednkey");led_off_on();}module_init(xsbase255_keypad_init);module_exit(xsbase255_keypad_exit);文件名为“test.c”的测试代码:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#define LED_SHOW 10int fd;static char *dev_name = "/dev/keypad";int main(int argc,char **argv){int data=0,pre_data;fd=open(dev_name,O_RDWR);if(!(fd>=0)){printf("%s file open failed\n",dev_name);exit(-1);}printf("\nkeypad App:press the push button see show led-Exit Ctrl-C\n",dev_name); ioctl(fd,LED_SHOW,1);while(1){do{pre_data=data;read(fd,(char*)&data,sizeof(data));data=(data&0xff);}while(data==0);if(pre_data==0){printf("Write %d LED\n",data);write(fd,(const char*)&data,sizepf((const char)data));}}close(fd);return 0;}。

相关文档
最新文档