加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 教程 > 正文

借助红外线接收器触发中断信号

发布时间:2021-12-11 15:59:04 所属栏目:教程 来源:互联网
导读:本程序利用红外线接收器触发中断信号,然后打印信息,红外线接收器通过gpio控制 /************************************************************************* File Name: redlight_irq.c Author: kid Mail: 280197326@qq.com Created Time: 2014年03月04日
本程序利用红外线接收器触发中断信号,然后打印信息,红外线接收器通过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=%dnrequest_irq is failn",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");

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读