iMX257的GPIO中断配置

项目要使用iMX257的一个GPIO管脚(GPIO2_8)作为用户中断输入。

在调用request_irq()函数时出现了问题,第一个参数irq应该如何赋值?直接赋irq = 51,驱动加载时提示:invalid module format

关于上述问题,解决思路可以参考以下2篇博文:

http://blog.csdn.net/yuhaibin168/article/details/8082090

http://blog.itpub.net/13771794/viewspace-722585/

在此基础上修改驱动,测试成功。以下进行一下小结:

1)头文件中有如下包含文件:

#include "mx25_pins.h"

#include "iomux.h"

2)GPIO管脚宏定义

#define GPIO2_8  MX25_PIN_A22

3)初始化函数中对GPIO2_8进行配置:

mxc_request_iomux(GPIO2_8, MUX_CONFIG_ALT5);//设置成GPIO工作模式,这点很重要

gpio_request(IOMUX_TO_GPIO(GPIO2_8), "gpio2_8");//获得GPIO的控制权,这点很重要

gpio_direction_input(IOMUX_TO_GPIO(GPIO2_8));//设置GPIO为输入方向

4)配置对应的中断寄存器:ICR1, IMR

5)调用request_irq()注册中断,第一个参数中断向量irq_gpio2_8 = gpio_to_irq(IOMUX_TO_GPIO(GPIO2_8))

6)调用enable_irq(irq_gpio2_8)使能中断。

7)读取ISR寄存器的值,确认中断,然后对应位写1清除标志位。

8)卸载驱动调用如下函数:

mxc_free_iomux(GPIO2_8, MUX_CONFIG_ALT5);

gpio_free(IOMUX_TO_GPIO(GPIO2_8));

free_irq(irq_gpio2_8, NULL);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值