linux定時器的使用

1.概述
       定時器(Timer)本來是硬件資源,但是由linux接管了所有的CPU資源,並對這些資源進行了抽象,那麼我們對Timer的使用就應該按照linux的要求,使用linux提供的接口來使用Timer。

2.使用
初始化
static struct timer_list buttons_timer;//內核定時器結構體
static int Timer_init()
{
   init_timer(&buttons_timer);//初始化內核定時器結構體
    buttons_timer.function = buttons_timer_function;//內核定時器的超時執行函數
    //buttons_timer.expires  = 0;//指定超時時刻
    add_timer(&buttons_timer);//在內核裏添加定時器
}

按鍵消抖
static irqreturn_t buttons_irq(int irq, void *dev_id)
{
    /* 10ms後啓動定時器 */
    irq_pd = (struct pin_desc *)dev_id;
    mod_timer(&buttons_timer, jiffies+HZ/100);//修改定時器超時時刻
    return IRQ_RETVAL(IRQ_HANDLED);
}
         按鍵的每次抖動,都進入按鍵中斷處理函數,修改定時器的超時時刻(當前時刻向後延10ms),直到最後一次抖動的10ms後,纔去處理這次的按鍵事件。
3.總結
         linux將CPU的所有硬件資源都接管並實現了抽象,屏蔽大量的細節,並提供了一套接口來供開發者使用硬件資源,可以提高開發效率、降低開發難度。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章