12.按键驱动程序设计(3)-按键驱动硬件操作实现
来源:互联网 发布:excel恢复之前数据 编辑:程序博客网 时间:2024/05/21 15:34
#include <linux/module.h>
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/io.h>
#define GPFCON 0x56000050
irqreturn_t key_int(int irq, void *dev_id)
{
//1. 检测是否发生了按键中断
//2. 清除已经发生的按键中断
//3. 打印按键值
printk("key down!\n");
return 0;
}
void key_hw_init()
{
unsigned short data;
unsigned int *gpio_config;
gpio_config = ioremap(GPFCON,4);
data = readw(gpio_config);
data &= ~0b11;
data |= 0b10;
writew(data,gpio_config);
}
int key_open(struct inode *node,struct file *filp)
{
return 0;
}
struct file_operations key_fops =
{
.open = key_open,
};
struct miscdevice key_miscdev = {
.minor = 200,
.name = "tq2440key",
.fops = &key_fops,
};
static int button_init()
{
misc_register(&key_miscdev);
//按键硬件初始化
key_hw_init();
//注册中断处理程序
request_irq(IRQ_EINT0,key_int,IRQF_TRIGGER_FALLING,"tq2440key",0);
return 0;
}
static void button_exit()
{
misc_deregister(&key_miscdev);
}
module_init(button_init);
module_exit(button_exit);
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/io.h>
#define GPFCON 0x56000050
irqreturn_t key_int(int irq, void *dev_id)
{
//1. 检测是否发生了按键中断
//2. 清除已经发生的按键中断
//3. 打印按键值
printk("key down!\n");
return 0;
}
void key_hw_init()
{
unsigned short data;
unsigned int *gpio_config;
gpio_config = ioremap(GPFCON,4);
data = readw(gpio_config);
data &= ~0b11;
data |= 0b10;
writew(data,gpio_config);
}
int key_open(struct inode *node,struct file *filp)
{
return 0;
}
struct file_operations key_fops =
{
.open = key_open,
};
struct miscdevice key_miscdev = {
.minor = 200,
.name = "tq2440key",
.fops = &key_fops,
};
static int button_init()
{
misc_register(&key_miscdev);
//按键硬件初始化
key_hw_init();
//注册中断处理程序
request_irq(IRQ_EINT0,key_int,IRQF_TRIGGER_FALLING,"tq2440key",0);
return 0;
}
static void button_exit()
{
misc_deregister(&key_miscdev);
}
module_init(button_init);
module_exit(button_exit);
0 0
- 12.按键驱动程序设计(3)-按键驱动硬件操作实现
- Linux按键驱动程序设计(3)-按键操作硬件实现
- 12.按键驱动程序设计(6)-驱动支持多按键优化
- 12.按键驱动程序设计(7)-阻塞型驱动设计
- 12.按键驱动程序设计(1)-混杂设备驱动模型
- 【Linux设备驱动】TQ2440按键驱动程序设计
- 按键驱动程序设计笔记
- 按键驱动程序设计笔记
- 按键驱动程序设计
- 12.按键驱动程序设计(5)-按键定时器去抖
- 12.按键驱动程序设计(4)-中断分层
- 嵌入式驱动编写-按键驱动程序
- Linux按键驱动程序设计(1)-混杂设备驱动模型
- 实现自动按键的方法 驱动级模拟(硬件模拟)
- 按键驱动程序
- 按键驱动程序
- 输入子系统(3):按键驱动实现
- 12.按键驱动程序设计(2)-Linux中断处理
- 11.LED驱动程序设计(2)-LED驱动程序设计
- 【leetcode】7. Reverse Integer
- 12.按键驱动程序设计(1)-混杂设备驱动模型
- JavaScript DOM编程艺术一个网页图片切换
- 12.按键驱动程序设计(2)-Linux中断处理
- 12.按键驱动程序设计(3)-按键驱动硬件操作实现
- 12.按键驱动程序设计(4)-中断分层
- 12.按键驱动程序设计(5)-按键定时器去抖
- 12.按键驱动程序设计(6)-驱动支持多按键优化
- 12.按键驱动程序设计(7)-阻塞型驱动设计
- Design Twitter
- DB2表被锁死,如何解锁
- Android开发——java.lang.IllegalStateException: The specified child already has a parent.
- 【LeetCode】 419. Battleships in a Board