if (v_sopccr == 0x01 | v_opccr == 0x00 ){ SYSTEM->PLLCR = 0x01; cmp_reg8 (&SYSTEM->PLLCR, 0x01, 0xFF); SYSTEM->HOCOCR = 0x01; cmp_reg8 (&SYSTEM->HOCOCR, 0x01, 0xFF); if(v_sopccr == 0x01){ SYSTEM->MOCOCR = 0x01; cmp_reg8 (&SYSTEM->MOCOCR, 0x01, 0xFF); } } SYSTEM->SOPCCR = v_sopccr; watch_reg8 (&SYSTEM->SOPCCR, v_sopccr, 0xFF); if(SYSTEM->SOPCCR_b.SOPCM != 1) { SYSTEM->OPCCR = v_opccr; watch_reg8 (&SYSTEM->OPCCR, v_opccr, 0xFF); } if (v_opccr == 0x00){ SYSTEM->LDOCR = 0x01; //0:Normal ; 1:High cmp_reg8 (&SYSTEM->LDOCR, 0x01, 0xFF);
时间: 2024-04-26 08:26:50 浏览: 136
这段代码是一个嵌入式系统的控制程序,用于控制系统的时钟和电压等参数。如果变量v_sopccr等于0x01或变量v_opccr等于0x00,则程序会设置PLL和HOCO时钟源,并将MOCO时钟源设置为1。然后将变量v_sopccr的值赋给SOPCCR寄存器,并检查SOPCM位是否为1。如果SOPCM位不为1,则将变量v_opccr的值赋给OPCCR寄存器,并将LDOCR寄存器的值设置为1。最后,程序使用cmp_reg8和watch_reg8函数监测和比较寄存器的值。
相关问题
代码解释:if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0) { asm(" ESTOP0"); } if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0) { EALLOW; SysCtrlRegs.PLLSTS.bit.DIVSEL = 0; EDIS; }EALLOW; SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1; SysCtrlRegs.PLLCR.bit.DIV = 0x0A; EDIS; while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) { } EALLOW; SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0; SysCtrlRegs.PLLSTS.bit.DIVSEL = 0X02; EDIS; 点击复制后,将打开C知道体验页
这段代码是用于配置Texas Instrument(德州仪器)C2000系列控制器的时钟系统的。它首先检查MCLKSTS是否等于0,如果不是,则跳转到ESTOP0,这是一种紧急停机机制。然后它检查DIVSEL是否等于0,如果不是,它将DIVSEL设置为0。接着它将MCLKOFF置为1,将PLL的分频器设置为0x0A,然后等待PLLLOCKS变为1。最后,将MCLKOFF置为0,将DIVSEL设置为0x02。
#define DSP28_PLLCR 10
根据提供的引用内容,`#define DSP28_PLLCR 10` 是一个宏定义,用于将标识符`DSP28_PLLCR`替换为数字`10`。这个宏定义可能是用于配置系统时钟的倍频倍数。
在上述引用中提到了配置系统时钟相关的寄存器,其中`SysCtrlRegs.PLLCR.bit.DIV`可能是用于配置锁相环的倍频倍数的寄存器。根据这个宏定义,`DSP28_PLLCR`的值为`10`,可能表示将锁相环的倍频倍数设置为`10`。
具体的配置过程可能需要参考相关的文档或代码,以确定如何使用这个宏定义来配置系统时钟的倍频倍数。
阅读全文