S5PV210按鍵新增timer去抖動

2021-09-26 01:58:13 字數 1982 閱讀 5018

**如下:

#include

#include

#include

#include

#include

#include

#include

static

struct input_dev *button_dev;

#define button_irq irq_eint2

static

struct timer_list buttons_timer;

/* 定義乙個定時器結構體 */

static

void

func

(void

)//定義tasklet並繫結tasklet排程函式

declare_tasklet

(mytasklet, func,0)

;//declare_work(mywork, func);

static

void

buttons_timer_function

(unsigned

long data)

//中斷的上半步

static irqreturn_t button_interrupt

(int irq,

void

*dummy)

static

int __init s5pv210_button_init

(void

)//set to the eint2 mode

s3c_gpio_cfgpin

(s5pv210_gph0(2

),s3c_gpio_sfn

(0x0f))

;if(request_irq

(button_irq, button_interrupt, irqf_trigger_falling | irqf_trigger_rising,

"button-sw5"

,null))

button_dev =

input_allocate_device()

;if(!button_dev)

button_dev->evbit[0]

=bit_mask

(ev_key)

; button_dev->keybit[

bit_word

(key_left)]=

bit_mask

(key_left)

; error =

input_register_device

(button_dev);if

(error)

return0;

err_free_dev:

input_free_device

(button_dev)

; err_free_irq:

free_irq

(button_irq, button_interrupt)

;return error;

}static

void __exit s5pv210_button_exit

(void

)module_init

(s5pv210_button_init)

;module_exit

(s5pv210_button_exit)

;// module_***這種巨集作用是用來新增模組描述資訊

module_license

("gpl");

// 描述模組的許可證

module_author

("mark <[email protected]>");

// 描述模組的作者

module_description

("s5pv210 button driver");

// 描述模組的介紹資訊

module_alias

("s5pv210_button");

// 描述模組的別名資訊

S5PV210 裸機中斷

這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...

S5PV210控制蜂鳴器

s5pv210帶有乙個蜂鳴器,十分吵鬧,本章將學習如何控制蜂鳴器。相關引腳 蜂鳴器的操作十分簡單,原理跟操作led一樣,通過控制gpdo o這個引腳就可以達到控制蜂鳴器的目的。1.start.s start.s做了下面3件事 第一步 關看門狗 第二步 設定棧,以便呼叫c函式 第三步 呼叫main函式...

S5PV210控制蜂鳴器

s5pv210帶有乙個蜂鳴器,十分吵鬧,本章將學習如何控制蜂鳴器。相關引腳 蜂鳴器的操作十分簡單,原理跟操作led一樣,通過控制gpdo o這個引腳就可以達到控制蜂鳴器的目的。1.start.s start.s做了下面3件事 第一步 關看門狗 第二步 設定棧,以便呼叫c函式 第三步 呼叫main函式...