RK平台中通过代码计算以GPIOx_xx命名的gpio,最后得到该gpio编号
#include <stdio.h>
#include <string.h>
#define str "gpio1_b5"
//GPIO1_A0 num = 1×32 + 0× 8 + 0 = 32
//GPIO1_B5 num = 1×32 + 1×8 + 5 = 45
static int get_gpio_num(char *s){
char number[2];
int i;
int num=0;
int ret;
for (i=0;i<strlen(s); i++){
if('0'<=s[i]&& s[i] <='9'){
number[num]= s[i]-'0';
num++;
}
if('A'<=s[i]&&s[i]<='D'|'a'<=s[i]&&s[i]<='d'){
if(s[i]>'a'){
ret=(s[i]-'a')*8;//小写
}
else{
ret=(s[i]-'A')*8;//大写
}
}
}
ret+=(number[num-2])*32+number[num-1];
return ret;
}
int main(int argc, char **argv)
{
int ret = get_gpio_num(str);
printf("gpio_num = %d\n",ret);
return 0;
}
打印
gpio_num = 45