|
在看Embedsky_gpio.c的时候,刚开始就卡住了
for (i = 0; i < 4; i++)
{
s3c2410_gpio_cfgpin(gpio_table[i], gpio_cfg_table[i]);
s3c2410_gpio_setpin(gpio_table[i], 0);
}
当i=0的时候,
s3c2410_gpio_cfgpin(gpio_table[0], gpio_cfg_table[0]);
即s3c2410_gpio_cfgpin(37,( 01<<10));
但是进入到s3c2410_gpio_cfgpin函数里面之后:
对于这一段有些疑问
switch (function) {
case S3C2410_GPIO_LEAVE:
mask = 0;
function = 0;
break;
case S3C2410_GPIO_INPUT:
case S3C2410_GPIO_OUTPUT:
case S3C2410_GPIO_SFN2:
case S3C2410_GPIO_SFN3:
if (pin < S3C2410_GPIO_BANKB) {
function -= 1;
function &= 1;
function <<= S3C2410_GPIO_OFFSET(pin);
} else {
function &= 3;
function <<= S3C2410_GPIO_OFFSET(pin)*2;
}
}
就是说fuction传进来的值为(01<<10),意思是将GPB5设置为输出(00为输入,01为输出,芯片手册上有)
但是进入swith我们发现没有一个能匹配的值。
还有就是void __iomem *base是什么
|
|