Part Number:TMS320F28377D
在使用TI提供的库函数void GPIO_SetupPinMux(Uint16 pin, Uint16 cpu, Uint16 peripheral)时,发现其中有一句程序计算基地址的,
如下所示: gpioBaseAddr = (Uint32 *)&GpioCtrlRegs + (pin/32)*GPY_CTRL_OFFSET;。
其中GPY_CTRL_OFFSET为TI提供的宏定义,如下:#define GPY_CTRL_OFFSET (0x40/2),
此处宏定义为什么要除以2啊,而且除以2之后,计算出来的基地址仍然是对的。
例如利用上述基地址C程序计算GPIO32的基地址,咱们根据上述C语言来算上述地址为0x7020,这个地址和手册中描述比较,肯定是错误的。
但在ccs软件编译之后运行,得出的地址为0x7040,是对的。
这种现象很奇怪,为什么上述定义的偏移要除以2呢
麻烦TI工程师能帮忙看下,谢谢
Yale Li:
你用的是哪个例程?
user4921973 说:
例如利用上述基地址C程序计算GPIO32的基地址,咱们根据上述C语言来算上述地址为0x7020,这个地址和手册中描述比较,肯定是错误的。
但在ccs软件编译之后运行,得出的地址为0x7040,是对的。
这款器件GPIO的基地址不在这里吧?