#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define device_name "flowled"
#define led_major 246 /* 主裝置號*/
#define led_on 1
#define led_off 2
struct led_dev
;struct led_dev *leddev;
static int flowled_open(struct inode *inode, struct file *filp)
static int flowled_release(struct inode *inode, struct file *filp)
static int flowled_write(struct file *file, const char *buffer,size_t count, loff_t *ppos)
static int flowled_read(struct file *file, char *buffer,size_t count, loff_t *ppos)
int flowled_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
static struct file_operations flowled_fops =
;static int __init flowled_init(void)
//硬體初始化,推薦在open中實現
//sep4020_flowled_setup();
//字元裝置註冊
cdev_init(&(leddev->cdev), &flowled_fops);
leddev->cdev.owner = this_module;
err = cdev_add(&leddev->cdev, devno, 1);// 建立裝置檔案
return 0;
fail_malloc:
unregister_chrdev_region(devno, 1);
return result;
}static void __exit flowled_exit(void)
module_init(flowled_init); //向linux系統記錄裝置初始化的函式名稱
module_exit(flowled_exit); //向linux系統記錄裝置退出的函式名稱
module_license("gpl");
module_author("tangquan");
module_description("****** char driver!");
LED流水燈實驗
led流水燈實驗 實現led流水燈,只需將上述電 路圖中的d1到d8逐個點亮 同樣也需要用到延時,方便我們肉眼可見 根據流水燈實現原理,即io口由低往高或者由高往低逐個輸出低電平特點,那麼我們可以將移位操作和迴圈結合進來 include 此檔案中定義了微控制器的一些特殊功能暫存器 include 因...
Linux驅動修煉之道 流水燈
module.h包含可裝載模組需要的大量符號和函式定義,包含init.h的目的是指定初始化和清除 struct file是在中定義的。註冊字元裝置使用 int register chrdev unsigned int major,const char name,struct file operati...
led流水燈的實現程式
led流水燈的實現是目前微控制器程式中最容易實現的程式。1.延時的實現 由於人眼的視覺暫留大約在2us左右,所以,在實現流水燈的時候有乙個重要的問題 延時。如果不延時,在人眼看來,led是全亮的。延時有兩種方式可以實現 1.呼叫intrins.h nop 延遲1us2.自己寫乙個延遲函式 t 0 t...