器件型号:MSP432P401R
工具/软件:TI-RTOS
大家好、我正在为我的项目使用 MSP432 Launchpad、我正在使用 MSP 驱动程序库来配置电路板
其中一种模式是电源控制模式、I hv 调用了一个用于设置内核电压 MAP_PCM_SetCoreVoltageLevel (PCM_VCORE1)的函数;
此功能的设置是什么,它在哪种电源模式下工作?
MAP_PCM_SetCoreVoltageLevel (PCM_VCORE1);在"cpu.c"中定义
我已在随附的文档中逐一映射了函数调用、请参阅、让我帮助了解它设置为 PCM 的内容
P {裕度-底部:0.25cm;线高:120%;}
/********* /
bool PCM_setCoreVoltageLevel (uint_fast8_t voltageLevel)
{
return __PCM_setCoreVoltageLevelAdvanced (voltageLevel,0,true);
}
/********* /
静态 bool __PCM_setCoreVoltageLevelAdvanced (uint_fast8_t voltageLevel,
uint32_t 超时、bool 分块)
{
uint8_t powermode、bCurrentVoltageLevel;
uint32_t regValue;
bool boolTimeout;
assert (voltageLevel = PCM_VCORE0 || voltageLevel = PCM_VCORE1);
/*获取当前功率模式和级别*/
powermode = PCM_getPowerMode();
bCurrentVoltageLevel = PCM_getCoreVoltageLevel ();
boolTimeout =超时>0? true:false;
/*如果我们已经处于他们请求的电源模式,请返回*/
if (bCurrentVoltageLevel = voltageLevel)
返回 true;
while (bCurrentVoltageLevel!= voltageLevel)
{
regValue = PCM->CTL0;
开关(PCM_getPowerState())
{
案例 PCM_AM_LF_VCORE1:
案例 PCM_AM_DCDC_VCORE1:
案例 PCM_AM_LDO_VCORE0:
PCM->CTL0 =(PCM_KEY |(PCM_AM_LDO_VCORE1)
|(regValue &~(PCM_CTL0_KEY_MASK | PCM_CTL0_AMR_MASK));
中断;
案例 PCM_AM_LF_VCORE0:
案例 PCM_AM_DCDC_VCORE0:
案例 PCM_AM_LDO_VCORE1:
PCM->CTL0 =(PCM_KEY |(PCM_AM_LDO_VCORE0)
|(regValue &~(PCM_CTL0_KEY_MASK | PCM_CTL0_AMR_MASK));
中断;
默认值:
断言(false);
}
if (分块)
{
while (BITBAND_peri (PCM->CTL1、PCM_CTL1_PMR_BUSY_OFS))
{
if (boolTimeout &&!(--timeout))
返回 false;
}
}
其他
{
返回 true;
}
bCurrentVoltageLevel = PCM_getCoreVoltageLevel ();
}
/*如果我们一直处于 LDO 模式,则更改电源模式*/
if (powermode!= PCM_getPowerMode())
{
如果(powermode = PCM_DCDC_MODE)
返回 PCM_setPowerMode (PCM_DCDC_MODE);
其他
返回 PCM_setPowerMode (PCM_LF_MODE);
}
返回 true;
}
/********* /
uint8_t PCM_getPowerMode (void)
{
uint8_t currentPowerState;
currentPowerState = PCM_getPowerState ();
开关(电流电源状态)
{
案例 PCM_AM_LDO_VCORE0:
案例 PCM_AM_LDO_VCORE1:
案例 PCM_LPM0_LDO_VCORE0:
案例 PCM_LPM0_LDO_VCORE1:
返回 PCM_LDO_MODE;
案例 PCM_AM_DCDC_VCORE0:
案例 PCM_AM_DCDC_VCORE1:
案例 PCM_LPM0_DCDC_VCORE0:
案例 PCM_LPM0_DCDC_VCORE1:
返回 PCM_DCDC_MODE;
案例 PCM_LPM0_LF_VCORE0:
案例 PCM_LPM0_LF_VCORE1:
案例 PCM_AM_LF_VCORE1:
案例 PCM_AM_LF_VCORE0:
返回 PCM_LF_MODE;
默认值:
断言(false);
返回 false;
}
}
/********* /
uint8_t PCM_getCoreVoltageLevel (void)
{
uint8_t currentPowerState = PCM_getPowerState ();
开关(电流电源状态)
{
案例 PCM_AM_LDO_VCORE0:
案例 PCM_AM_DCDC_VCORE0:
案例 PCM_AM_LF_VCORE0:
案例 PCM_LPM0_LDO_VCORE0:
案例 PCM_LPM0_DCDC_VCORE0:
案例 PCM_LPM0_LF_VCORE0:
返回 PCM_VCORE0;
案例 PCM_AM_LDO_VCORE1:
案例 PCM_AM_DCDC_VCORE1:
案例 PCM_AM_LF_VCORE1:
案例 PCM_LPM0_LDO_VCORE1:
案例 PCM_LPM0_DCDC_VCORE1:
案例 PCM_LPM0_LF_VCORE1:
返回 PCM_VCORE1;
案例 PCM_LPM3:
返回 PCM_VCORELPM3;
默认值:
断言(false);
返回 false;
}
}
/********* /
uint8_t PCM_getPowerState (void)
{
返回(PCM->CTL0 | PCM_CTL0_CPM_MASK);
}
/********* /