最近在学习嵌入式驱动程序的编写范例的时候,使用的是LPC2200 看的一些重要的内容。
命令 功能
GPIO_SET_PIN 指定的IO口输出高电平
GPIO_SET_ALL_PIN IO的任意子集输出高电平
GPIO_CLEAN_PIN 指定的IO口输出低电平
GPIO_CLEAN_ALL_PIN IO的任意子集输出低电平
GPIO_SET_PIN_OUT IO为输出状态
GPIO_SET_PIN_IN IO为输入状态
GPIO_SET_MULTI_PIN_OUT 任意子集输出状态
GPIO_SET_MULTI_PIN_IN 任意子集出入状态
GPIO_READ_PORT 读指定的IO口输出电平
GPIO_READ_ALL_PORT 读本端口所有的IO输出电平
GPIO_READ_PIN 读指定IO口上引脚的电平
GPIO_READ_ALL_PIN 读本端口所有IO上引脚的电平
使用范例:
GPIO_SET_PIN_OUT
{
int fd;
..............
fd=open("/dev/P0",0_RDONLY);
..............
ioctl(fd,GPIO_SET_PIN_OUT,14);
.............
}
使用ioctl配置引脚14为输出状态
例子2
{
int fd;
..............
fd=open("/dev/P0",0_RDONLY);
..............
ioctl(fd,GPIO_SET_MULTI_PIN_OUT,(1<<14)|(1<<25));
............
}
配置14脚和25脚为输出电平
例子3
{
int fd;
..............
fd=open("/dev/P0",0_RDONLY);
..............
ioctl(fd,GPIO_SET_PIN_IN,14);
.............
} 配置14引脚为输入
以上的这些例子是配置命令 读取端口电平的命令需要例外写,他们略有不同
GPIO_READ_PORT
{
int fd;
u32 pin;
...........
fd=open("/dev/P0",0_RDONLY);
..........
pin=14;
ioctl(fd,GPIO_READ_PORT,&pin);
}
GPIO_READ_ALL_PORT 这是读取P0口的电平
{
int fd;
u32 pin;
...........
fd=open("/dev/P0",0_RDONLY)
..........
ioctl(fd,GPIO_READ_PORT,&pin);
}
GPIO_READ_PIN
{
int fd;
u32 pin;
..........
fd=open("/dev/P0",0_RDONLY);
..........
ioctl(fd,GPIO_READ_pin,&pin);
}
以上的大约10个函数都是由专门的寄存器配置的。再由ioctl配置