button按鈕驅動模型

2021-06-02 04:36:49 字數 2679 閱讀 4752

#include #include #include #include int main(int argc, char **argv)

// 這是個無限迴圈,程序有可能在read函式中休眠,當有按鍵被按下時,它才返回

while (1)

for (i = 0; i < sizeof(press_cnt)/sizeof(press_cnt[0]); i++)

}close(fd);

return 0;

}

#include #include #include #include #include #include #include #include #include #include #define device_name     "buttons"   /* 載入模式後,執行」cat /proc/devices」命令看到的裝置名稱 */

#define button_major 232 /* 主裝置號 */

struct button_irq_desc ;

/* 用來指定按鍵所用的外部中斷引腳及中斷觸發方式, 名字 */

static struct button_irq_desc button_irqs = , /* k1 */

, /* k2 */

, /* k3 */

, /* k4 */

};/* 按鍵被按下的次數(準確地說,是發生中斷的次數) */

static volatile int press_cnt = ;

/* 等待佇列:

* 當沒有按鍵被按下時,如果有程序呼叫s3c24xx_buttons_read函式,

* 它將休眠

*/static declare_wait_queue_head(button_waitq);

/* 中斷事件標誌, 中斷服務程式將它置1,s3c24xx_buttons_read將它清0 */

static volatile int ev_press = 0;

static irqreturn_t buttons_interrupt(int irq, void *dev_id)

/* 應用程式對裝置檔案/dev/buttons執行open(...)時,

* 就會呼叫s3c24xx_buttons_open函式

*/static int s3c24xx_buttons_open(struct inode *inode, struct file *file)

if (err)

return 0;

}/* 應用程式對裝置檔案/dev/buttons執行close(...)時,

* 就會呼叫s3c24xx_buttons_close函式

*/static int s3c24xx_buttons_close(struct inode *inode, struct file *file)

return 0;

}/* 應用程式對裝置檔案/dev/buttons執行read(...)時,

* 就會呼叫s3c24xx_buttons_read函式

*/static int s3c24xx_buttons_read(struct file *filp, char __user *buff,

size_t count, loff_t *offp)

/* 這個結構是字元裝置驅動程式的核心

* 當應用程式操作裝置檔案時所呼叫的open、read、write等函式,

* 最終會呼叫這個結構中的對應函式

*/static struct file_operations s3c24xx_buttons_fops = ;

/* * 執行「insmod s3c24xx_buttons.ko」命令時就會呼叫這個函式

*/static int __init s3c24xx_buttons_init(void)

printk(device_name " initialized\n");

return 0;}/*

* 執行」rmmod s3c24xx_buttons.ko」命令時就會呼叫這個函式

*/static void __exit s3c24xx_buttons_exit(void)

/* 這兩行指定驅動程式的初始化函式和解除安裝函式 */

module_init(s3c24xx_buttons_init);

module_exit(s3c24xx_buttons_exit);

/* 描述驅動程式的一些資訊,不是必須的 */

module_author(""); // 驅動程式的作者

module_description("s3c2410/s3c2440 button driver"); // 一些描述資訊

module_license("gpl"); // 遵循的協議

這裡是makefile部分
cross=arm-linux-

all: button_test

button_test: button_test.c

$(cross)gcc -o $@ button_test.c -static

clean:

@rm -rf button_test *.o

button按鈕變換名稱

str.format t 第 d次迴圈 i cstring str str.format t floating point 2f n 12345.12345 tprintf s lpctstr str str.format t left justified integer 6d n 35 tprin...

MFC按鈕控制項(Button)

按鈕控制項的主要方法和事件見mfc 程式開發參考大全 p186 p188 下面是乙個例項,用按鈕來實現顯示位圖 顯示圖示 顯示滑鼠影象和選中按鈕的功能,步驟如下 1 建立乙個基於對話方塊的應用程式 2 向對話方塊中新增乙個複選按鈕 乙個單選按鈕控制項和5個按鈕控制項,為按鈕控制項新增變數,分別為m ...

Button按鈕顏色切換

class buttonlistener implements onclicklistener,ontouchlistener if event.getaction motionevent.action down else if v.getid r.id.btnschool if event.get...