头文件
#ifndef __HEAD__H__
#define __HEAD__H__
//宏定义功能码
#define LED1_ON _IO('l',1)
#define LED1_OFF _IO('l',0)
#define LED2_ON _IO('l',3)
#define LED2_OFF _IO('l',2)
#define LED3_ON _IO('l',5)
#define LED3_OFF _IO('l',4)
#endif
应用层文件
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>
#include "head.h"
int main(int argc, char const *argv[])
{
char buf[128]={
0};
int op;
int fd = open("/dev/myled1",O_RDWR);
if(fd <0 )
{
perror("文件打开失败\n");
return -1;
}
while (1)
{
printf("请输入: 0 (led1关灯) 1(led1开灯) 2 (led2关灯) 3 (led2开灯) 4 (led3关灯) 5 (led3开灯) ->");
scanf("%d",&op);
while(getchar()!='\n');
switch (op)
{
case 0:
ioctl(fd,LED1_OFF);
break;
case 1:
ioctl(fd,LED1_ON);
break;
case 2:
ioctl(fd,LED2_OFF);
break;
case 3:
ioctl(fd,LED2_ON);
break;
case 4:
ioctl(fd,LED3_OFF);
break;
case 5:
ioctl(fd,LED3_ON);
break;
default:
break;
}
}
close(fd);
return 0;
}
内核层代码
#include <linux/init.h>
#include <linux/module.h>
#include<linux/fs.h>
#include<linux/uaccess.h>
#include<linux/io.h>
#include<linux/device.h>
#include<linux/poll.h>