WINCE6.0 简单LED驱动程序的编写

本文档详细介绍了在WINCE6.0环境下编写简单LED驱动程序的过程,包括驱动的目的、所需设备、原理、步骤和实验结果。通过理解流驱动结构,利用BSP提供的映射函数和GPIO寄存器操作,实现了LED的点亮和熄灭功能。实验涉及的函数包括地址映射、LED上下文结构体、GPIO寄存器操作等,还展示了如何导出驱动接口并配置平台文件。
摘要由CSDN通过智能技术生成

把它写成了实验报告的样子! 在此BLOG中的有些函数是针对特定的BSP, 比如:地址的映射函数, 在每一个BSP中它的地址映射函数都不同, 但是都是地址映射(废话当然是地址映射了)。其实里面有很多的东西都还可以添加:比如添加读取LED信息状态, 优化地址映射(不必把全部的GPIO都映射, 可以自定义一个小的结构体来实现)。

 

一. 实验目的

a)         掌握流驱动的结构

b)        掌握一般流驱动的编写方法

 

二. 实验设备

a)         S3C6410 开发板一台

b)        PC 机一台, VS2005, CE6.0 环境

 

三. 实验内容

a)         进行简单 LED 驱动的编写。

 

四. 实验原理

a)         硬件原理图

                                                    i.             

                      ii.             

                    iii.              从原理图可以知道如果我们要点亮 LEDx 只需要 GPMx 输出高电平, 如果要熄灭 LEDx 只需要 GPMx 输出低电平即可。

 

b)        软件原理设计

                        i.              由于在 WINCE 中使用都是虚拟的地址, 所以需要将实际的物理地址转换为虚拟地址来使用。 在系统提供的 BSP 中提供了一个函数来实现从物理地址到虚拟地址的映射。

1.         void *DrvLib_MapIoSpace (UINT32 PhysicalAddress , UINT32 NumberOfBytes , BOOL CacheEnable )

2.         把物理地址转换为虚拟地址。(其实它就是在地址映射表中查找相应的物理地址,然后返回对应的虚拟地址加上它的偏移。)

3.         UINT32 PhysicalAddress :要实现映射的物理地址的起始地址。

4.         UINT32 NumberOfBytes : 要映射物理地址的长度。

5.         BOOL CacheEnable :该物理地址是否使用了CACHE.( 具体参照地址映射表) 。

                      ii.              LED 上下文结构体的定义

1.         定义了一个 LED 驱动的上下文, 用来保存 LED 驱动的信息。 但是只是简单的 LED 驱动, 没有包含多的数据。

typedef struct

{

                volatile S3C6410_GPIO_REG    *pGPIOReg ;

}LED_PUBLIC_CONTEXT , *PLED_PUBLIC_CONTEXT ;

2 S3C6410_GPIO_REG 是BSP 预先定义的一个GPIO 使用的数据结构。

                

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值