请教:
TivaWare库函数里面有个:
ROM_SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2);
函数的定义是:
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2);
其中函数参数的定义是#define SYSCTL_PERIPH_TIMER2 0xf0000402 //Timer 2
要对TIMER2外设clock使能,要对RCGCTIMER寄存器配置,它的地址是0x400F.E604, Timer2控制位对应在其中的bit-2,所以要将RCGCTIMER里面的bit-2置1,就能达到目的。
但是我跟踪了一下SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2)函数,将具体的置代入,函数里面是个HWREG的宏定义,最后我得到结果是
(*(volatile uint32_t *) (0x43FC_C088)) = 1;
但是我弄不明白,这句怎么能实现上面所说的功能呢?
多谢解答!
xyz549040622:
原函数是这样来的
void SysCtlPeripheralEnable(uint32_t ui32Peripheral) {//// Check the arguments.//ASSERT(_SysCtlPeripheralValid(ui32Peripheral));//// Enable this peripheral.//HWREGBITW(SYSCTL_RCGCBASE + ((ui32Peripheral & 0xff00) >> 8),ui32Peripheral & 0xff) = 1; }而SYSCTL_RCGCBASE的基地址为0x400F.E000,算下来寄存器的地址为0x400F.E402
而不是你所说的0x43FC_C088