利用红外线接收器触发中断信号
2014-03-05 15:55
393 查看
开发板:龙芯1B
PC:ubuntu13.10
本程序利用红外线接收器触发中断信号,然后打印信息,红外线接收器通过gpio控制
PC:ubuntu13.10
本程序利用红外线接收器触发中断信号,然后打印信息,红外线接收器通过gpio控制
/************************************************************************* > File Name: redlight_irq.c > Author: kid > Mail: 280197326@qq.com > Created Time: 2014年03月04日 星期二 16时07分55秒 ************************************************************************/ #include <linux/interrupt.h> #include <linux/module.h> #include <linux/init.h> #define SET_GPIO (*(volatile unsigned *)0xbfd010C4) #define SET_IN (*(volatile unsigned *)0xbfd010D4) #define SET_RED (*(volatile unsigned *)0xbfd010F4) int *j = (int*)125; int i = 0; static irqreturn_t redlight (int k, void *p) { printk(KERN_ALERT "%d.receive redlight!\n",i); i++; return (IRQ_HANDLED); } static int __init redlight_init(void) { int result; SET_GPIO = SET_GPIO | 0x20000000; SET_IN = SET_IN | 0x20000000; SET_RED = SET_RED | 0x20000000; result = request_irq(125, redlight, IRQF_SHARED|IRQ_TYPE_LEVEL_LOW, "redlight", j); //请求中断,IRQ_TYPE_LEVEL_LOW为低电平有效 if( result!=0 ){ printk(KERN_WARNING "result=%d\nrequest_irq is fail\n",result); } enable_irq(125); return 0; } static void __exit redlight_exit(void) { free_irq(125, j); //释放内存 printk(KERN_ALERT "quit!\n"); } module_init(redlight_init); module_exit(redlight_exit); MODULE_LICENSE("GPL");
相关文章推荐
- 发短信_NYOJ_643
- 乘法逆元 (扩展欧几里得或费马小定理)
- 利用DecimalFormat实现四舍五入
- 小波变换和motion信号处理(二)
- 利用DecimalFormat实现四舍五入
- void f() const 常成员函数
- Windows Phone开发(31):画刷
- NSArray 和 NSDictionary 的 NSEnumerator
- 以后还是来这里写博客吧
- Android自定义Iphone风格的圆角边框开关按钮
- datagrid 右键菜单,冻结列
- C#/.Net通过Npgsql 访问PostgreSQL 乱码问题解决
- c++日历改进版
- 使用Perfmon和PAL工具查看Server性能--从性能监视器获得更多有用信息
- JAVA学习第三天笔记
- Java中的final关键字
- const和static用法
- 旋转数组的最小数字
- Jquery attr("checked") 返回checked或undefined 获取选中失效
- c++日历改进版