S3C2410_GPF(4)
#define S3C2410_GPF(_nr) (S3C2410_GPIO_F_START + (_nr)) ==》变成:S3C2410_GPIO_F_START+4
S3C2410_GPIO_F_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_E) ==》变成:S3C2410_GPIO_NEXT(S3C2410_GPIO_E) + 4
#define S3C2410_GPIO_NEXT(__gpio) \
((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 0)
分析:从后面开始分析
#define S3C2410_GPIO_NEXT(__gpio) \
((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 0)
其中##在这里表示连接作用,字符串的连接而已;根据上面的可以得到:S3C2410_GPIO_E_START + S3C2410_GPIO_E_NR + CONFIG_S3C_GPIO_SPACE + 0 +4
S3C2410_GPIO_E_START == S3C2410_GPIO_NEXT(S3C2410_GPIO_D) == S3C2410_GPIO_D_START+S3C2410_GPIO_D_NR+ CONFIG_S3C_GPIO_SPACE + 0
写到这里应该明白了;
S3C2410_GPIO_E_NR+S3C2410_GPIO_D_NR+S3C2410_GPIO_C_NR+S3C2410_GPIO_B_NR+S3C2410_GPIO_A_NR + 5*CONFIG_S3C_GPIO_SPACE+0+4
其中:#define CONFIG_S3C_GPIO_SPACE 0
看的都乱了,其实就是从A类管脚个数开始计算到当前类引脚个数。S3C2410_GPB(0) 就是从A类引脚开始计算,所以为:32;依次类推;
===============================================