|
楼主 |
发表于 2021-3-10 18:05:08
|
显示全部楼层
这个配置电源寄存器的代码
HAL_StatusTypeDef HAL_PWREx_ConfigSupply(uint32_t SupplySource)
{
uint32_t tickstart;
/* Check the parameters */
assert_param(IS_PWR_SUPPLY(SupplySource));
if((PWR->CR3 & (PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)) != (PWR_CR3_SMPSEN | PWR_CR3_LDOEN))
{
if((PWR->CR3 & PWR_SUPPLY_CONFIG_MASK) != SupplySource)
{
/* Supply configuration update locked, can't apply a new regulator config */
return HAL_ERROR;
}
}
/* Set the power supply configuration */
MODIFY_REG(PWR->CR3, PWR_SUPPLY_CONFIG_MASK, SupplySource);
/* Get tick */
tickstart = HAL_GetTick();
/* Wait till voltage level flag is set */
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ACTVOSRDY))
{
if((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY_US)
{
return HAL_TIMEOUT;
}
}
/* When the SMPS supplies external circuits verify that SDEXTRDY flag is set */
if((SupplySource == PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO) ||
(SupplySource == PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO) ||
(SupplySource == PWR_SMPS_1V8_SUPPLIES_EXT) ||
(SupplySource == PWR_SMPS_2V5_SUPPLIES_EXT))
{
/* Get tick */
tickstart = HAL_GetTick();
/* Wait till SMPS external supply ready flag is set */
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_SMPSEXTRDY))
{
if((HAL_GetTick() - tickstart ) > PWR_FLAG_SETTING_DELAY_US)
{
return HAL_TIMEOUT;
}
}
}
return HAL_OK;
} |
|