TI中文支持网
TI专业的中文技术问题搜集分享网站

SysCtlPeripheralEnable函数是怎么实现控制位置位功能的?

请教:

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

赞(0)
未经允许不得转载:TI中文支持网 » SysCtlPeripheralEnable函数是怎么实现控制位置位功能的?
分享到: 更多 (0)