代码如下
void
GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)
{
//
// Check the arguments.
//
ASSERT(GPIOBaseValid(ulPort));
//
// Write the pins.
//
HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2))) = ucVal;
}
#define HWREG(x)
(*((volatile unsigned long *)(x)))
函数调用如下:
GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_2,0xff);
不明白的地方:
为什么将第二个参数左移两位在和第一个参数相加?操作的是哪个寄存器?
计算后的地址在手册找不到说明。。。
谁能帮忙指点下。谢谢
此帖出自
小平头技术问答
搜索不到相关解释。大家直接就看懂了吗?
是我的思维僵化,还是初次接触arm导致!哈哈~!
一周热门 更多>