//*****************************************************************************
static inline void
SysCtl_enablePeripheral(SysCtl_PeripheralPCLOCKCR peripheral)
{
uint16_t regIndex;
uint16_t bitIndex;
//peripheral =0x1200
//SYSCTL_PERIPH_BIT_M = 0x001FU
//SYSCTL_PERIPH_BIT_S = 0x0008U
// Decode the peripheral variable.
//
regIndex = (uint16_t)2U * ((uint16_t)peripheral &
(uint16_t)SYSCTL_PERIPH_REG_M);
//bitIndex = (0x1200 & 0x001F) >> 0x0008U =0x12 =18
//新版的配置普遍采用这种方式,下面这句话的目的是要给某个寄存器赋值1,那么就要算出把1移动多少位
//才能到该寄存器的该位所在的位置
bitIndex = ((uint16_t)peripheral & SYSCTL_PERIPH_BIT_M) >> SYSCTL_PERIPH_BIT_S;
EALLOW;
//
// Turn on the module clock.
//
HWREG(CPUSYS_BASE + SYSCTL_O_PCLKCR0 + regIndex) |=
((uint32_t)1U << bitIndex);
EDIS;
}
C2000dsp库新的寄存器控制方式
最新推荐文章于 2022-12-26 17:27:40 发布
这段代码是关于如何在C语言中启用系统控制器中的外设时钟。通过解码外围设备变量,确定相应的寄存器索引和位索引,然后通过设置特定寄存器的相应位来开启模块时钟。该过程涉及到位操作,包括按位与、右移等,以精确控制硬件资源的使能。
摘要由CSDN通过智能技术生成