当前位置: 技术问答>linux和unix
检测不到中断,无法进入中断处理程序。
来源: 互联网 发布时间:2016-09-19
本文导语: 注册和初始化中断用了两个函数 1)kxtf9_init_irq(); 2)ret = request_irq(client->irq, kxtf9_irq_handler, IRQF_TRIGGER_LOW, "kxtf9", client);//IRQF_TRIGGER_HIGH kxtf9_init_irq如下: static int kxtf9_init_irq(void) { int ret = 0; ret = gpio_request(KXTF9...
注册和初始化中断用了两个函数
1)kxtf9_init_irq();
2)ret = request_irq(client->irq, kxtf9_irq_handler, IRQF_TRIGGER_LOW, "kxtf9", client);//IRQF_TRIGGER_HIGH
kxtf9_init_irq如下:
static int kxtf9_init_irq(void)
{
int ret = 0;
ret = gpio_request(KXTF9_IRQ_GPIO, "kxtf9_irq");
if (ret) {
printk("gpio_requset failed, return: %dn", ret);
goto err_request_gpio;
}
ret = gpio_direction_input(KXTF9_IRQ_GPIO);
if (ret) {
printk("set kxtf9_irq gpio's direction failed, return: %dn",
ret);
gpio_free(KXTF9_IRQ_GPIO);
}
err_request_gpio:
return ret;
}
ret的返回结果是0,应该是表示成功的;
但无论我将request_irq中的flag设成IRQF_TRIGGER_LOW还是IRQF_TRIGGER_HIGH,中断处理函数kxtf9_irq_handler都没有执行。请大虾指点。
1)kxtf9_init_irq();
2)ret = request_irq(client->irq, kxtf9_irq_handler, IRQF_TRIGGER_LOW, "kxtf9", client);//IRQF_TRIGGER_HIGH
kxtf9_init_irq如下:
static int kxtf9_init_irq(void)
{
int ret = 0;
ret = gpio_request(KXTF9_IRQ_GPIO, "kxtf9_irq");
if (ret) {
printk("gpio_requset failed, return: %dn", ret);
goto err_request_gpio;
}
ret = gpio_direction_input(KXTF9_IRQ_GPIO);
if (ret) {
printk("set kxtf9_irq gpio's direction failed, return: %dn",
ret);
gpio_free(KXTF9_IRQ_GPIO);
}
err_request_gpio:
return ret;
}
ret的返回结果是0,应该是表示成功的;
但无论我将request_irq中的flag设成IRQF_TRIGGER_LOW还是IRQF_TRIGGER_HIGH,中断处理函数kxtf9_irq_handler都没有执行。请大虾指点。
|
IRQF_SHARED试试
或者你的中断根本就没有被触发
或者你的中断根本就没有被触发
|
请确认你的硬件发生中断了吗?
|
应该可以使用示波器测量下的吧