- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《TQ2440开发板按键点亮LED驱动开发详解》.doc
文章记录了作者在2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误。
一、驱动开发流程
Linux驱动开发不同于应用程序的开发。驱动开发是直接和硬件打交道的,通过对硬件的操作给应用程序提供一些接口函数,使得应用程序能够“间接”的控制硬件来工作。对于按键点亮LED的驱动开发流程如下。
驱动开发具体步骤1、查看开发板TQ2440底板原理图,找到按键和LED模块,如下图:
图-2 按键和LED电路图
从上图我们可以清楚地看到K1~K4对应的管脚是ENT1~ENT4,LED1~LED4对应的管脚是nLED_1~nLED_4. 2、查看TQ2440_核心板原理图,找到对应的CPU管脚,如下图:
图-3 按键和LED对应CPU管脚电路图
查看s3c2440芯片手册,查看CPU管脚的模式,如下图
从上图我们可以看出按键对应的CPU管脚GPF0~GPF4都是占两位(如:GPF0[1:0])。按键是一种中断,要想让按键工作在中断模式下,就要设置GPF0~GPF4(GPF3除外)管脚都设置在中断模式下,即为10。对于LED对应的CPU管脚GPB5~GPB8也是占两位。要想让LED工作,就要让LED工作在输出模式下,即对应管脚设置为01. 4、编写按键点亮LED驱动程序/*调用内核头文件,和应用程序调用的头文件不一样*/#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <asm/irq.h>#include <linux/interrupt.h>#include <asm/uaccess.h>#include <asm/arch/regs-gpio.h>#include <asm/hardware.h>#include <linux/device.h>#include <linux/poll.h>
#define DEVICE_NAME "tope-buttons" //自定义驱动称为“tope-buttons”。#define BUTTON_MAJOR 232 //自定义驱动的主设备号是232。注意:此处的主设备号不 能和系统已使用的一样,用cat /proc/devices 查看该设备号是否已使用,如果已被使用,请换一个未使用的主设备号。#define IOCTL_LED_ON 1 //定义LED亮为1#define IOCTL_LED_OFF 0 //定义LED暗为0
/* 定义含中断,管脚,管脚设置等信息的结构体 */struct button_irq_desc { int irq; int pin; int pin_setting; int number; char *name; };
/* 用来指定按键所用的外部中断引脚及中断触发方式, 名字 */static struct button_irq_desc button_irqs [] ={ {IRQ_EINT1, S3C2410_GPF1, S3C2410_GPF1_EINT1, 0, "KEY1"}, /* K1 */ {IRQ_EINT4, S3C2410_GPF4, S3C2410_GPF4_EINT4, 1, "KEY2"}, /* K2 */ {IRQ_EINT2, S3C2410_GPF2, S3C2410_GPF2_EINT2, 2, "KEY3"}, /* K3 */ {IRQ_EINT0, S3C2410_GPF0, S3C2410_GPF0_EINT0, 3, "KEY4"}, /* K4 */}; 上面初始化成员里的S3C2410_GPF0_EINT0在Regs-gpio.h中定义为 #define S3C2410_GPF0_EINT0 (0x02 << 0),即为我们前面说的“10”模式,其他的管脚类似。这个初始化函数的作用就是将如S3C2410_GPF0_EINT0的模式写入地址为如S3C2410_GPF0的寄存器里,并将这个管脚设置成中断模式,以及添加一些其他信息。
/* 初始化四个按键的值key_values */static volatile int key_values [] = {0, 0, 0, 0};
static unsigned long led_table [] ={ S3C2410_GPB5, S3C2410_GPB6, S3C2410_GPB7, S3C2410_
您可能关注的文档
- 《OHSAS18001:2016职业健康安全管理体系内审员培训教材》.pdf
- 《OHSMS职业健康安全管理体系培训教材》.ppt
- 《OOP项目案例_购物车》.pdf
- 《p+f_安全栅_KF系列》.pdf
- 《P+F安全栅》.pdf
- 《P+F安全栅应用指南》.pdf
- 《P+F安全栅组态自控系统班20160168》.ppt
- 《P+F安全栅说明书(中文)》.pdf
- 《PDT数字集群通信系统技术规范-安全(标准版)》.pdf
- 《Phaseo系列开关电源和安全隔离变压器产品目录》.pdf
- 第12课 我们小点儿声 课件 二年级道德与法治上册(部编版).ppt
- 11.2我从哪里来(教学课件)二年级道德与法治下册(统编版).ppt
- 第10课 我们不乱扔 课件 二年级道德与法治上册(部编版).ppt
- 1.3过好我们的课余生活 课件五年级道德与法治上册(部编版).ppt
- 第四单元《法律保护我们健康成长》大单元整体学程设计道德与法治六年级上册统编版.pdf
- 第十一课:多姿多彩的民间艺术(分层练习)四年级道法下册 部编版.pdf
- 第八课:大家的“朋友”(分层练习)三年级道法下册 部编版.pdf
- 第5课 我爱我们班 课件 二年级道德与法治上册(部编版).ppt
- 第二单元 我们是公民 大单元整体学程设计道德与法治六年级上册统编版.pdf
- 人教部编版二年级语文下册第五单元单元教学课件.ppt
1亿VIP精品文档
相关文档
最近下载
- 2023-2024网课智慧树知道《大学语文(桂林理工大学)》章节测试答案.pdf
- 2022年杭州电子科技大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 《活动变人形》赏析课件.ppt
- 小学科普之通信发展史.pptx VIP
- 日语语法课程教学大纲.doc
- 人教版高中数学选择性必修二教学设计全套.docx
- 内镜逆行阑尾炎治疗术ERAT(2022.3.1王于梅).pptx
- 一年级数学下册100以内加减破十法借十法凑十法分解式练习.pdf
- GB∕T 40753-2021 供应链安全管理体系 ISO 28000实施指南.pdf
- “双减”初中道德与法治优秀作业设计案例.docx
文档评论(0)