没触发中断但是中断函数打印了

#没触发中断但是中断函数打印了

// 禁用中断

local_irq_disable();

// 请求线程化的中断处理
/*ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, my_interrupt_handler,
                                    IRQF_TRIGGER_RISING, "my_char_device", gpio_pin);*/
ret = request_irq(irq, my_interrupt_handler, IRQF_TRIGGER_FALLING, "my_char_device", gpio_pin);
if (ret) {
    printk(KERN_ERR "Failed to request IRQ.\n");
    return ret;
}  

// 使能中断
local_irq_enable();

我看了一下,没看出这个代码有什么问题的啊,你在gpt跑一下,看有什么错误。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/854985
  • 这篇博客也不错, 你可以看下浅谈中断与单片机中断处理的过程
  • 您还可以看一下 程媛媛老师的期货量化交易麦语言编程中级课程中的 画线程序化小节, 巩固相关知识点
  • 除此之外, 这篇博客: 什么是中断中的 中断处理过程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    中断的处理过程一般来说分以下几部分:

    1. 中断信号的接收:
      • CPU外:中断代理芯片接收外部中断,之后将该终端的中断向量号发送到CPU
      • CPU内:CPU执行该中断向量号对应的中断处理程序
    2. 在收到中断向量号之后,CPU根据其取定位中断处理程序。
    3. 处理器进行特权级检查
    4. 执行中断处理程序

    在这里插入图片描述
    而在执行完程序之后,这个时候我们需要用到iret命令返回。它会从栈中弹出数据到cs、eip、eflags等等。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^