平时调试GPIO的时候,往往是驱动写好控制接口,应用层操作,驱动配置端口->编译->烧录固件->查看现象,这样操作很繁琐,很浪费时间, 直接通过串口登录开发板,通过命令的方式控制端口,这样的方式既方便又快速.
注意: 前提条件是驱动程序中不能初始化该GPIO,否则操作过程中会提示设备忙的状态。
Device Drivers-> GPIO Support ->/sys/class/gpio/… (sysfs interface)
引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
列举一款芯片计算方式:
#define GPIO_PA(n) (0*32 + n)
#define GPIO_PB(n) (1*32 + n)
#define GPIO_PC(n) (2*32 + n)
#define GPIO_PD(n) (3*32 + n)
#define GPIO_PE(n) (4*32 + n)
#define GPIO_PF(n) (5*32 + n)
PA0 = 0*32+0 = 0
PA1 = 0*32+1 = 1
int LEDDriver_SetGPIO()
{
pid_t status;
status = system("echo 21 > /sys/class/gpio/export");
if(status == -1){
printf("system error");
return -1;
}else{
if(WIFEXITED(status)){
if(0 == WEXITSTATUS(status)){
printf("run successfully\n");
}else{
printf("run failed %d \n",WEXITSTATUS(status));
return -1;
}
}else{
printf("exit code %d \n",WEXITSTATUS(status));
return -1;
}
}
system("echo out > /sys/class/gpio/gpio21/direction");
system("echo 1 > /sys/class/gpio/gpio21/value");
}