嵌入式系统原理与设计实验报告

合集下载

《嵌入式系统原理与应用》实验报告01-GPIO输出控制实验

《嵌入式系统原理与应用》实验报告01-GPIO输出控制实验
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
3、实验内容与步骤
实验内容:
LPC2138外接3个按键,4个LED灯,实现不同流水灯的效果。
4、实验结果与数据处理
1.实验连接图
图1 实验原理图
2.程序代码
#include "config.h"
图3.3:模式3下蓝灯亮起
图3.4:模式3下绿灯亮起
5、分析与讨论
在这一次实验中,我学会了通过教程下载并安装了ADS和Proteus软件,同时根据录播,一步一步地熟悉两个软件的时候,同时也完成了利用仿真实验模拟了GPIO输出控制。初步掌握并理解了Proteus仿真软件的使用,对ARM7有了进一步的了解,为之后的学习打下了基础。
}
void LED_3(void)
{
IO0SET = 0x0001;
delay(1000);
IO0CLR = 0x0001;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0008;
delay(1000);
IO0CLR = 0x0008;
delay(1000);
IO0CLR = 0x0008;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0200;
delay(1000);
IO0CLR = 0x0200;
}
void LED_2(void)
{
IO0SET = 0x0200;

arm嵌入式实验报告

arm嵌入式实验报告

arm嵌入式实验报告ARM嵌入式实验报告近年来,随着科技的不断进步,嵌入式系统在各个领域得到了广泛应用。

作为其中一种重要的嵌入式处理器架构,ARM架构以其高效能和低功耗的特点,成为了众多嵌入式系统的首选。

本实验报告将介绍我在ARM嵌入式实验中的学习和体会。

1. 实验背景和目的嵌入式系统是指将计算机技术应用于各种电子设备中,以完成特定任务的系统。

ARM架构作为一种低功耗、高性能的处理器架构,广泛应用于智能手机、平板电脑、物联网设备等领域。

本次实验的目的是通过学习ARM架构的基本原理和应用,了解嵌入式系统的设计和开发过程。

2. 实验内容本次实验主要包括以下几个方面的内容:2.1 ARM架构的基本原理首先,我们学习了ARM架构的基本原理,包括指令集、寄存器、内存管理等方面的知识。

ARM指令集具有丰富的指令种类和灵活的寻址方式,可以满足不同应用的需求。

同时,ARM处理器具有多个寄存器,用于存储和操作数据,提高了程序的执行效率。

此外,内存管理是嵌入式系统设计中非常重要的一环,ARM架构通过虚拟内存管理机制,实现了对内存的高效管理。

2.2 ARM开发工具的使用为了进行ARM嵌入式系统的开发,我们需要使用相应的开发工具。

本次实验中,我们学习了如何使用Keil MDK开发工具,进行ARM程序的编译、调试和下载。

Keil MDK提供了一套完整的开发环境,包括编译器、调试器和仿真器等,方便了我们进行ARM程序的开发和调试。

2.3 ARM嵌入式系统的设计和开发在掌握了ARM架构和开发工具的基本知识后,我们开始进行ARM嵌入式系统的设计和开发。

本次实验中,我们以一个简单的温度监测系统为例,设计了相应的硬件电路和软件程序。

硬件电路包括传感器、模拟转换电路和显示器等,用于采集和显示温度数据。

软件程序则负责控制硬件电路的运行,并将采集到的温度数据进行处理和显示。

3. 实验结果和分析通过实验,我们成功地设计和开发了一个基于ARM架构的温度监测系统。

嵌入式系统看门狗实验报告

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验《嵌入式系统原理与接口技术》实验报告实验序号:4实验项目名称:看门狗实验1234篇二:嵌入式实验报告目录实验一跑马灯实验................................................. (1)实验二按键输入实验................................................. .. (3)实验三串口实验................................................. . (5)实验四外部中断实验................................................. .. (8)实验五独立看门狗实验................................................. (11)实验七定时器中断实验................................................. (13)实验十三ADc实验................................................. .. (15)实验十五DmA实验................................................. .. (17)实验十六I2c实验................................................. (21)实验十七spI实验................................................. .. (24)实验二十一红外遥控实验................................................. .. (27)实验二十二Ds18b20实验................................................. (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告引言嵌入式系统作为一种广泛应用于各行各业的计算机系统,其本身具有一定的难度与挑战。

本实验报告将围绕嵌入式系统的设计、开发以及应用展开讨论,旨在总结并分享在实验中所获得的经验与知识。

一. 实验背景嵌入式系统是指以特定功能为目标的计算机系统,其设计与开发过程相较于传统的计算机系统更为复杂和精细。

本次实验的主要目标是通过设计一个基于嵌入式系统的智能家居控制器,来探索嵌入式系统的应用与实践。

二. 实验内容2.1 硬件设计嵌入式系统的硬件设计是整个实验的基础,其合理性与稳定性直接影响系统的性能和可靠性。

在本次实验中,我们选择了一块主频为xx的处理器作为核心,配备了丰富的外设接口,如GPIO、串口等。

我们还为系统增加了一块液晶显示屏和一组按键,以实现简单的用户交互。

2.2 软件开发在硬件设计完成后,我们开始进行软件开发。

首先,我们需要选择一个合适的操作系统作为嵌入式系统的基础。

针对本次实验,我们选择了xx操作系统,其具备较强的实时性和稳定性,能够满足我们对系统性能的要求。

接着,我们进行了嵌入式系统的驱动程序开发。

通过编写各个外设的驱动程序,我们实现了与液晶显示屏和按键的交互,并将其与处理器进行了适当的接口配置。

另外,我们还开发了嵌入式系统的应用程序。

通过编写智能家居控制器的代码,我们成功实现了对家居设备的远程控制和监测。

用户可以通过液晶显示屏和按键进行交互,实现对家居设备的开关、调节和状态查看等操作。

三. 实验结果与分析经过实验测试,我们发现嵌入式系统在智能家居领域的应用具有较高的可行性与实用性。

通过嵌入式系统的控制,用户可以方便地实现对家居设备的远程操控,提升了家居智能化的程度。

同时,嵌入式系统的实时性和稳定性使得智能家居控制器具备了较高的安全性和可靠性。

然而,在实验过程中我们也遇到了一些挑战。

其中,系统的驱动程序开发是较为复杂的一环,需要仔细理解硬件接口和协议,并进行合理的配置。

此外,系统的稳定性和功耗管理也是需要重点关注的问题。

嵌入式报告实验报告

嵌入式报告实验报告

嵌入式报告实验报告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 异常情况测试通过设计一系列异常情况测试用例,测试嵌入式系统对异常情况的处理能力。

嵌入式系统 实验报告

嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131

嵌入式系统设计(实验一)

嵌入式系统设计(实验一)

工业控制
嵌入式系统被广泛应用于工业 自动化领域,如生产线控制、 机器人控制等。
医疗设备
嵌入式系统可以实现医疗设备 的自动化控制和数据采集,如 医疗监护仪、输液泵等。
其他领域
嵌入式系统还可以应用于通信、 能源、环保等领域,发挥着越 来越重要的作用。
03
硬件平台搭建与配置
硬件平台选择
ARM开发板
传感器与执行器
汇编语言
针对特定硬件平台,使用汇编语言可 以实现更高效的代码执行和更精确的 硬件控制。
软件架构设计
分层架构
将系统划分为多个层次,每个层次负责特定的功能,降低系统复 杂性并提高可维护性。
事件驱动架构
通过事件触发相应的处理函数,实现模块间的解耦和异步通信。
微内核架构
将核心功能集中在微内核中,通过插件或模块扩展系统功能,提高 灵活性和可扩展性。
嵌入式系统设计(实验一)
• 实验目的与要求 • 嵌入式系统概述 • 硬件平台搭建与配置 • 软件设计与实现 • 系统测试与验证 • 实验总结与展望
01
实验目的与要求
实验目的
掌握嵌入式系统基本概念
01
通过实验了解嵌入式系统的定义、特点、应用领域等基本概念。
熟悉嵌入式开发环境
02
学习搭建嵌入式开发环境,包括硬件平台、操作系统、开发工
THANKS
感谢观看
提交实验报告
按时提交完整的实验报告,展示实验成果和 收获。
02
嵌入式系统概述
嵌入式系统定义
01
嵌入式系统是一种专用的计算机 系统,它被设计为控制、监视或 者辅助操作机器和设备的运行。
02
与通用计算机系统不同,嵌入式 系统通常被嵌入到特定的设备中 ,执行特定的任务,并且不需要 人工干预。

嵌入式设计实验报告

嵌入式设计实验报告

一、实验目的1. 熟悉嵌入式系统开发的基本流程和常用工具;2. 掌握嵌入式系统硬件资源的使用方法;3. 熟悉嵌入式系统软件开发的基本方法;4. 提高嵌入式系统设计能力。

二、实验内容1. 硬件平台:基于STM32F103系列单片机的开发板;2. 软件平台:Keil uVision5集成开发环境;3. 实验任务:设计一个简单的嵌入式系统,实现按键输入和LED灯控制功能。

三、实验原理1. 硬件原理:STM32F103系列单片机是一款高性能、低功耗的ARM Cortex-M3内核微控制器,具有丰富的片上外设资源,如GPIO、定时器、ADC等。

在本实验中,主要使用GPIO进行按键输入和LED灯控制。

2. 软件原理:嵌入式系统软件开发主要包括底层驱动程序、中间件和应用层。

底层驱动程序负责硬件资源的管理和配置;中间件提供系统服务,如通信、定时器等;应用层实现用户功能。

在本实验中,主要使用C语言编写程序,实现按键输入和LED灯控制功能。

四、实验步骤1. 硬件连接:将开发板上的按键和LED灯分别连接到单片机的GPIO端口;2. 软件编写:(1)创建项目:在Keil uVision5中创建一个新的项目,选择STM32F103系列单片机作为目标设备;(2)添加源文件:添加一个C语言源文件,用于编写主程序;(3)配置GPIO:在源文件中编写GPIO初始化代码,配置按键和LED灯的GPIO端口为输入和输出模式;(4)编写按键输入程序:编写按键扫描函数,用于检测按键状态,并根据按键状态控制LED灯;(5)编译程序:编译项目,生成目标文件;(6)下载程序:将编译好的程序下载到开发板;3. 实验验证:在开发板上运行程序,观察按键输入和LED灯控制功能是否正常。

五、实验结果与分析1. 实验结果:按键按下时,LED灯点亮;按键松开时,LED灯熄灭;2. 实验分析:通过编写程序,实现了按键输入和LED灯控制功能,验证了嵌入式系统开发的基本流程和常用工具。

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

嵌入式系统实验报告指导教师:学科专业:班级:学号:姓名:2014年6月前言从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史,并在全世界各行业得到广泛应用。

嵌入式系统产品的研制与应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。

经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作与娱乐方式,而且这些改变还在加速。

嵌入式系统具有无数的种类,每类都具有自己独特的个性。

例如,MP3、数码相机与打印机就有很大的不同。

汽车中更就是具有多个嵌入式系统,使汽车更轻快、更干净、更容易驾驶,机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都就是典型的嵌入式系统。

事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑电饭煲…)都就是嵌入式系统。

嵌入式系统广泛的适应能力与多样性,使得视听、工作场所甚至健身设备中到处都有嵌入式系统。

高端的嵌入式系统与工业软件的发展, 实际上与我们对该行业最先进的科学技术前沿的掌握有关,换言之,与我国该行业的科学技术水平有关。

学习与研究嵌入式系统,具有重大意义。

这学期的嵌入式系统的学习过程中我们在2410RP这一实验开发平台上进行了诸多嵌入式的基础实验。

在本报告中,将把其中两个具有代表性的实验的原理、内容、结果以及驱动与测试程序写出来。

目录实验一数码管显示 (1)1、1 实验目的 (1)1、2 实验内容 (1)1、3 实验原理 (1)1、3、1 LED的发光原理 (1)1、3、2 八段LED显示器 (1)1、3、3 芯片zlg7289A的介绍 (2)1、3、4 数码管的连接电路 (3)1、4 实验步骤 (3)1、5 实验源代码解释与说明 (3)1、6 总结 (10)实验二LED点阵驱动实验 (11)2、1 实验目的 (11)2、2 实验内容 (11)2、3 实验原理 (11)2、3、1 8X8点阵数码管发光原理 (11)2、3、2 数码管的连接电路 (11)2、3、3 I/O接口 (12)2、4 实验步骤 (12)2、5 实验源代码解释与说明 (13)2、6 实验结果 (17)2、7 总结 (17)实验一数码管显示1、1 实验目的学习串并转换的相关知识,并编写驱动程序。

1、2 实验内容1)了解数码管显示的工作原理;2)掌握数码管驱动的编写及测试过程;3)对zlg7289A的驱动程序进行编写;4)驱动数码管并显示个人学号。

1、3 实验原理1、3、1 LED的发光原理LED(Light Emitting Diode),即发光二极管。

就是一种半导体固体发光器件。

它就是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。

发光二极管的核心部分就是由p型半导体与n 型半导体组成的晶片,如图所示,在p型半导体与n型半导体之间有一个过渡层,称为p-n结。

在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。

PN结加反向电压,少数载流子难以注入,故不发光。

这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。

当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

图1-1 LED发光原理图1、3、2 八段LED显示器八段LED显示器由8个发光二极管组成,如图1-2、图1-3所示。

基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。

LED显示器有两种不同的形式:一种就是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种就是8个发光二极管的阴极都连在一起的,称之为共阴极LED 显示器。

共阴与共阳结构的LED显示器各笔划段名与安排位置就是相同的。

当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。

8个笔划段hgfedcba 对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于就是用8位二进制码就可以表示欲显示字符的字形代码。

例如,对于共阴LED显示器,当共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示"P"字符,即对于共阴极LED 显示器,“P”字符的字形码就是73H。

如果就是共阳LED显示器,共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。

这里必须注意的就是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线来自行设计了。

图1-2 LED数码管组成图图1-3 LED数码管原理图1、3、3 芯片zlg7289A的介绍zlg7289A就是一片具有串行接口的可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片该芯片同时还可连接多达64 键的键盘矩阵单片即可完成LED显示﹑键盘接口的全部功能。

zlg7289A内部含有译码器可直接接受BCD码或16进制码并同时具有2 种译码方式参瞧后文此外还具有多种控制指令如消隐﹑闪烁﹑左移﹑右移﹑段寻址等zlg7289A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。

芯片zlg7289A的典型应用:仪器仪表、工业控制器、条形显示器、控制面板。

芯片zlg7289A的特点:1)串行接口无需外围元件可直接驱动LED;2)各位独立控制译码/不译码及消隐与闪烁属性;3))循环左移/ 循环右移指令;4)具有段寻址指令方便控制独立LED;5)64键键盘控制器内含去抖动电路。

1、3、4 数码管的连接电路图1-4 数码管连接电路1、4 实验步骤1)连接号宿主PC机与一台S3C2410-RP目标板;2)编写数码管驱动程序spi_led、c文件;3)启动系统终端设置S3C2410-RP目标板的地址;4)将宿主PC机的根目录挂载到S3C2410-RP目标板的mnt目录下;5)加载驱动程序;6)执行并测试程序。

1、5 实验源代码解释与说明A、头文件keypad、h#ifndef __KEYPAD_H__#define __KEYPAD_H__//Keypad 扫描码#define KEYPADNUMLK 0x33#define KEYPADDIV 0x34#define KEYPADMUL 0x35#define KEYPADSUB 0x3d#define KEYPADADD 0x2e#define KEYPADENTER 0x1e#define KEYPADDOT 0x15 //DEL#define KEYPAD0 0x14 //INS#define KEYPAD1 0x1b //END#define KEYPAD2 0x1c //DOWN#define KEYPAD3 0x1d //PDN#define KEYPAD4 0x23 //LEFT#define KEYPAD5 0x24#define KEYPAD6 0x25 //RIGHT#define KEYPAD7 0x2b //HOME#define KEYPAD8 0x2c //UP#define KEYPAD9 0x2d //PUP#endif头文件定义了嵌入式开发板上输入键盘各个按键的逻辑地址。

B、驱动程序源文件spi_led、c#include <linux/config、h> //config、h内核配置头文件#include <linux/kernel、h> //kernel、h定义了经常用到的函数原型及宏定义#include <linux/module、h> //module、h定义了内核模块相关的函数、变量及宏#include <linux/sched、h> //sched、h为调度程序头文件,定义了任务结构#include <linux/interrupt、h> //interrupt、h中包含了与操作系统中断相关的大部分宏及struct结构的定义#include <linux/timer、h>#include <linux/init、h> //init、h中定义了驱动的初始化与退出相关的函数#include <linux/delay、h>#include <linux/modversions、h>#include <linux/version、h> //version、h里定义了Linux内核的版本,用于版本检查#include <asm/io、h> //I/O头文件,定义对I/O端口操作的函数#include <asm/irq、h>#include <asm/hardware、h> //访问系统硬件的头文件//------------------------------------------------------------------------------#include <linux/config、h>#include <linux/spinlock、h> //自旋锁,防止多处理器并发#include <linux/interrupt、h>#include <linux/tty、h>#include <linux/mm、h>#include <linux/signal、h>#include <linux/kbd_ll、h>#include <linux/random、h>#include <linux/poll、h>#include <linux/miscdevice、h> //miscdevice结构体成员变量设备#include <linux/slab、h>#include <linux/kbd_kern、h>#include <linux/vt_kern、h>#include <linux/smp_lock、h>#include <linux/kd、h>#include <linux/pm、h>#include <asm/bitops、h>#include <asm/uaccess、h> //包含copy_to_user、copy_from_user等内核访问用户进程内存地址的函数定义#include <asm/system、h> //系统头文件,定义了设置或修改描述符/中断门等的嵌入式汇编宏//------------------------------------------------------------------------------#define HR_DEBUG 1//------------------------------------------------------------------------------#define IRQ_spi_led_INT IRQ_EINT4#define GPIO_SimpleINT_EINT4 (GPIO_MODE_ALT0 | GPIO_PULLUP_EN | GPIO_F4)#define ONEBIT 0x1#define KEYPADCSDIS (GPGDAT |=(ONEBIT << 3))#define KEYPADCSEN (GPGDAT &=~(ONEBIT << 3))#define KEYPADDIRMO (GPBDAT &=~(ONEBIT << 0))#define KEYPADDIRMI (GPBDAT |=(ONEBIT << 0))#define spi_led_MAJOR 104 //定义led_ary_MAJOR设备的主设备号devfs_handle_t spi_led_handle; //系统支持devfs的数据结构int spi_led_temp_count=0; //定义的系统全局变量,防止文件被多重打开static int DELAY_TIME=100; //时间延迟为100int putcToKBCTL(u8 c){u32 i;KEYPADCSEN;KEYPADDIRMO;udelay(60);while((SPSTA1 & ONEBIT)==0); // wait while busySPTDAT1 = c; // write left justified datawhile((SPSTA1 & ONEBIT)==0); // wait while busyKEYPADCSDIS;i = SPRDAT1;return(i);} //功能概要:将所给数据写入指定的寄存器中int spi_ledInit(){int t;char dummy = (char)0xff;printk("GPGCON=%x\n",GPGCON);GPGCON &= ~((0x3<<6)|(0x3<10)|(0x3<<12)|(0x3<<14));GPGCON |= ((0x1<<6)|(0x3<10)|(0x3<<12)|(0x3<<14));printk("GPGCON=%x\n",GPGCON);KEYPADCSDIS; // 设置为高电平// setup Dir signal (KEYBOARD) CPU->7289GPBCON &= ~(0x3 << 0); // 清除GPB0端口数据GPBCON |= (ONEBIT << 0); //设置端口GPB0用于_PWR_OK信号输出// rGPDDAT &=~(ONEBIT << 0); // 将_PWR_OK t置0 KEYPADDIRMO; //设置SPI(串行外设接口)寄存器// 中断模式,可用分频,主模式,高电平时钟,形式B,正常模式//rSPCON1=(ONEBIT<<5)|(ONEBIT<<4)|(ONEBIT<<3)|(0x0<<2)|(ONEBIT<<1);// 查询模式,可用分频,主模式,高电平时钟,形式A,正常模式SPCON1 = (0<<5)|(ONEBIT<<4)|(ONEBIT<<3)|(0x0<<2)|(0<<1);/* 开发者必须根据PCLK时钟的变化正确地调节分频器的值*/SPPRE1 = 255;/* 99、121K = 203M/4/2/(255+1) PCLK=50、75MhzFCLK=203Mhz SPICLK=99、121Khz*/putcToKBCTL(0xbf); //传送初始化指令printk("Key Pad Init complete:\n"); //显示键盘初始化成功putcToKBCTL(0xc8); //第一个数码管的地址为0xc8 putcToKBCTL(0x01); //设置第一个数码管显示的数值为1 KEYPADCSDIS;putcToKBCTL(0xc9); //第二个数码管的地址为0xc9 putcToKBCTL(0x02); //设置第二个数码管显示的数值为2 KEYPADCSDIS;putcToKBCTL(0xca); //第三个数码管的地址为0xca putcToKBCTL(0x09); //设置第三个数码管显示的数值为9 KEYPADCSDIS;putcToKBCTL(0xcb); //第三个数码管的地址为0xcb putcToKBCTL(0x00); //设置第三个数码管显示的数值为0 KEYPADCSDIS;return(1);} //函数实现LED数码管的初始化,返回值为1时,则完成系统初始化u8 readKBValue(void){unsigned char i;KEYPADCSEN;KEYPADDIRMO;udelay(60);while((SPSTA1 & ONEBIT)==0); // wait while busySPTDAT1 = 0x15; // 传送读取键值的命令while((SPSTA1 & ONEBIT)==0); // wait while busyudelay(30);//delay 30usKEYPADDIRMI;SPTDAT1 = 0xff; // 传送读取键值的命令while((SPSTA1 & ONEBIT)==0); // wait while busyi = SPRDAT1;// printk("%x\n",i);KEYPADCSDIS;KEYPADDIRMO;return(i);} //函数实现的主要功能为读取键盘输入的值。

相关文档
最新文档