⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 akaeled.c

📁 uClinux环境下
💻 C
字号:
#include <linux/config.h>#include <linux/utsname.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/string.h>#include <linux/fcntl.h>#include <linux/malloc.h>#include <linux/timer.h>#include <linux/sched.h>#include <linux/tty.h>#include <linux/module.h>#include <linux/init.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/system.h>#include <linux/poll.h>#include <asm/arch/io.h>#include <asm/44b.h>#define rPCONA_LED (rPCONA=rPCONA&~0X300)#define rPCONB_LED (rPCONB=rPCONB&~0X010)#define LED_1_OFF (rPDATA=rPDATA|512)#define LED_1_ON (rPDATA=rPDATA&~512)#define LED_2_OFF (rPDATA=rPDATA|256)#define LED_2_ON (rPDATA=rPDATA&~256)#define LED_3_OFF (rPDATB=rPDATB|16)#define LED_3_ON (rPDATB=rPDATB&~16)void long_delay(void) {   int i;   for(i=0;i<0x7fff0;i++)      {;} }static int led_open(struct inode *inode,struct file *file) {  int i;  rPCONA_LED;  rPCONB_LED;  printk("led open: the led open now\n"); for(i=0;i<3;i++)  {  printk("led open: all leds off\n");     LED_1_OFF;     LED_2_OFF;     LED_3_OFF;     long_delay();     printk("led open: all leds on\n");     LED_1_ON;     LED_2_ON;     LED_3_ON;     long_delay();   } return 0;  }static int led_close(struct inode *inode,struct file *file){  printk("led close :now the led close\n");   LED_1_OFF;   LED_1_ON;   long_delay();   LED_2_OFF;   LED_2_ON;   long_delay();   LED_3_OFF;   LED_3_ON;   long_delay();  return 0;}static int led_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){//  led_open(); switch(cmd)   {     case 1:       { LED_1_ON;         long_delay();         LED_2_OFF;         long_delay();         LED_3_OFF;         printk("led1 on\n");         long_delay();         long_delay();         long_delay();         long_delay();         break;        }; case 2:       { LED_1_OFF;         LED_2_ON;         LED_3_OFF;         printk("led2 on\n");         long_delay();          long_delay();         long_delay();         break;        };     case 3:       { LED_1_OFF;         LED_2_OFF;         LED_3_ON;         printk("led3 on\n");         long_delay();          long_delay();         long_delay();          break;      };   }     return 0;} static int led_read(void){    return 0;  } struct file_operations akaeled_fops = {   open:    led_open,   ioctl:   led_ioctl,   release: led_close,   read:    led_read, };int akaeled_init(void) { int result;   printk("the led register now\n");  result=register_chrdev(254,"akaeled",&akaeled_fops);   if(result<0)     {        printk("register failure!\n" );     }   else    {       printk("register OK!\n");    } return 0;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -