這時候,可利用interrupt中斷去處理event之後再繼續運作,
尤其是輸入裝置通知有資料要送給系統時候,interrupt是一個好方法.
1.設定interrupt pin,以及觸發條件(
IRQF_TRIGGER_RISING , 上升緣觸發
IRQF_TRIGGER_FALLING ,下降緣觸發
IRQF_TRIGGER_HIGH, 高準位觸發
IRQF_TRIGGER_LOW 低準位觸發)
hello_irq_gpio = gpio_to_irq(/*put the interrupt pin here .*/);
ret = request_threaded_irq(hello_irq_gpio, NULL, hello_interrupt,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
"hello", hello_data);
if (ret < 0) {
printk("[hello.c]Failed to register interrupt\n");
}
2.設定觸發條件之後的處理:
static irqreturn_t hello_interrupt(int irq, void *dev_id)
{
printk("interrupt enter and define the behavior here \n");
return IRQ_HANDLED;
}
沒有留言:
張貼留言