- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2440开发板上实现按键点亮LED驱动开发的详细过程
文章记录了作者在S3C2440开发板上实现按键点亮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 un
您可能关注的文档
- RH208农用有机硅展渗剂对农药防治小菜蛾的增效作用.doc
- RHB钢筋的化学成分与机械性能.doc
- RGZN_2图搜索技术中的状态空间法.doc
- RG防水施工方案.doc
- RHC基于ZigBee的远程自动抄表AMR系统.doc
- RHEL52下的Hadoop分布式集群环境搭建.doc
- RH炉真空系统操作规程.doc
- RH真空精炼炉深脱碳技术探讨.doc
- RIFD关键技术.doc
- rj智能型执行器使用手册.doc
- 人教新目标版英语九年级 中考模拟学情评估(三)(含答案).pdf
- 上海市风华中学2024-2025学年高三上学期9月阶段测试英语试题(无答案).pdf
- 统编版2024-2025学年语文六年级上册期末检测卷(有答案).pdf
- 人教新目标版英语九年级第二学期全册学情评估(含答案).pdf
- 内蒙古自治区巴彦淖尔市杭锦后旗第六中学2024-2025学年八年级上学期阶段性测试历史试题(解析版).pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版无答案.pdf
- 湖南省衡阳市常宁市2023-2024学年七年级上学期期末考试英语试题.pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版含解析.pdf
- 江苏省泰州市姜堰区城西实验学校2024-2025学年部编版九年级上学期月考历史试卷(原卷版).pdf
- 内蒙古伊金霍洛旗2022-2023学年七年级上学期期末考试英语试题.pdf
最近下载
- 2024年社会工作者《中级法规与政策》数字型考点.pdf VIP
- 竺乾威、朱春奎、李瑞昌:《公共管理导论》 第三章 组织.pptx VIP
- 建筑工程图集 B16G101-1:中英文双语版16G101-1.pdf VIP
- 图集规范-05N6井盖标准图集.pdf
- 室外消防钢结构楼梯拆除方案.pdf
- (精选施工方案)0141 民航总局办公楼加固整修工程.doc VIP
- 统编版小学语文四年级上册第三单元 观察 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
- 有关青岛市新建住宅质量保修手册.doc
- 同课异构省一等奖《同底数幂的乘法》教案 (省一等奖) .doc
- 连云港市新海高级中学2023-2024学年高一上学期10月月考数学试题(解析版).docx VIP
文档评论(0)