- 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_GPB8,};//声明LED的管脚
static unsigned in
您可能关注的文档
- 《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
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)