给下列ccs代码添加应用逻辑void SetVcoreUp (unsigned int level) { // Open PMM registers for write PMMCTL0_H = PMMPW_H; // Set SVS/SVM high side new level SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level; // Set SVM low side to new level SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level; // Wait till SVM is settled while ((PMMIFG & SVSMLDLYIFG) == 0); // Clear already set flags PMMIFG &= ~(SVMLVLRIFG + SVMLIFG); // Set VCore to new level PMMCTL0_L = PMMCOREV0 * level; // Wait till new level reached if ((PMMIFG & SVMLIFG)) while ((PMMIFG & SVMLVLRIFG) == 0); // Set SVS/SVM low side to new level SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level; // Lock PMM registers for write access PMMCTL0_H = 0x00; }
时间: 2024-03-18 07:44:08 浏览: 8
这段 CCS 代码是一个函数,用于设置芯片的 Vcore 电压等级。要添加应用逻辑,可以在该函数中添加一些特定的代码,以根据具体应用场景实现特定的功能。以下是一个示例:
void SetVcoreUp (unsigned int level) {
// Open PMM registers for write
PMMCTL0_H = PMMPW_H;
// Set SVS/SVM high side new level
SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;
// Set SVM low side to new level
SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;
// Wait till SVM is settled
while ((PMMIFG & SVSMLDLYIFG) == 0);
// Clear already set flags
PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);
// Set VCore to new level
PMMCTL0_L = PMMCOREV0 * level;
// Wait till new level reached
if ((PMMIFG & SVMLIFG))
while ((PMMIFG & SVMLVLRIFG) == 0);
// Set SVS/SVM low side to new level
SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;
// Lock PMM registers for write access
PMMCTL0_H = 0x00;
// 在这里添加应用逻辑代码
// 比如,可以在设置完 Vcore 后检查芯片的温度,并根据温度值做出相应的响应。
if (PMMCTL2 & 0x01) {
// 芯片温度过高,执行错误处理逻辑
// ...
}
else {
// 芯片温度正常,继续执行其他逻辑
// ...
}
}
在上述示例中,我们在设置完 Vcore 后添加了一些代码,用于检查芯片的温度。如果芯片温度过高,就执行错误处理逻辑;否则,就继续执行其他逻辑。这是一个简单的示例,具体的应用逻辑可以根据具体需求进行设计和实现。