You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
9.0 KiB
C
234 lines
9.0 KiB
C
/**
|
|
******************************************************************************
|
|
* @file py32f403_hal_pwr_ex.h
|
|
* @author MCU Application Team
|
|
* @brief Header file of PWR HAL Extension module.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2023 Puya Semiconductor Co.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by Puya under BSD 3-Clause license,
|
|
* the "License"; You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at:
|
|
* opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under BSD 3-Clause license,
|
|
* the "License"; You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at:
|
|
* opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef __PY32F403_HAL_PWR_EX_H
|
|
#define __PY32F403_HAL_PWR_EX_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "py32f403_hal_def.h"
|
|
|
|
/** @addtogroup PY32F403_HAL_Driver
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup PWREx
|
|
* @{
|
|
*/
|
|
|
|
/* Exported types ------------------------------------------------------------*/
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
|
/** @defgroup PWREx_Exported_Constants PWREx Exported Constants
|
|
* @{
|
|
*/
|
|
/** @defgroup PWREx_REGULATOR_VOLTAGE_SCALE PWREx Regulator Voltage Scale
|
|
* @{
|
|
*/
|
|
#define PWR_REGULATOR_VOLTAGE_SCALE1 0x00000000U /* Scale 1 mode(default value at reset): 1.1v. */
|
|
#define PWR_REGULATOR_VOLTAGE_SCALE2 PWR_CR_VOS_0 /* Scale 2 mode: 1.0v. */
|
|
#define PWR_REGULATOR_VOLTAGE_SCALE3 PWR_CR_VOS_1 /* Scale 3 mode: 0.9v */
|
|
#define PWR_REGULATOR_VOLTAGE_SCALE4 PWR_CR_VOS /* Scale 4 mode: 0.8v */
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWREx_BACKUP_VOLTAGE_SCALE PWREx BkUp Voltage Scale
|
|
* @{
|
|
*/
|
|
#define PWR_BACKUP_VOLTAGE_SCALE1 0x00000000U /* Scale 1 mode(default value at reset): 1.1v. */
|
|
#define PWR_BACKUP_VOLTAGE_SCALE2 PWR_CR_BKPVR_VOS_0 /* Scale 2 mode: 0.9v. */
|
|
#define PWR_BACKUP_VOLTAGE_SCALE3 PWR_CR_BKPVR_VOS_1 /* Scale 3 mode: 0.85v. */
|
|
#define PWR_BACKUP_VOLTAGE_SCALE4 PWR_CR_BKPVR_VOS /* Scale 4 mode: 0.8v. */
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported macro ------------------------------------------------------------*/
|
|
/** @defgroup PWREx_Exported_Macros PWREx Exported Macros
|
|
* @{
|
|
*/
|
|
|
|
/** @brief macros configure the main internal regulator output voltage.
|
|
* @param __REGULATOR__ specifies the regulator output voltage to achieve
|
|
* a tradeoff between performance and power consumption when the device does
|
|
* not operate at the maximum frequency (refer to the datasheets for more details).
|
|
* This parameter can be one of the following values:
|
|
* @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output Scale 1 mode
|
|
* @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output Scale 2 mode
|
|
* @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output Scale 3 mode
|
|
* @arg PWR_REGULATOR_VOLTAGE_SCALE4: Regulator voltage output Scale 4 mode
|
|
* @retval None
|
|
*/
|
|
#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) do { \
|
|
__IO uint32_t tmpreg = 0x00U; \
|
|
MODIFY_REG(PWR->CR, PWR_CR_VOS, (__REGULATOR__)); \
|
|
/* Delay after an RCC peripheral clock enabling */ \
|
|
tmpreg = READ_BIT(PWR->CR, PWR_CR_VOS); \
|
|
UNUSED(tmpreg); \
|
|
} while(0U)
|
|
|
|
|
|
|
|
/** @brief macros configure the backup ldo voltage.
|
|
* @param __REGULATOR__ specifies the backup ldo voltage to achieve
|
|
* This parameter can be one of the following values:
|
|
* @arg PWR_BACKUP_VOLTAGE_SCALE1: voltage output Scale 1 mode
|
|
* @arg PWR_BACKUP_VOLTAGE_SCALE2: voltage output Scale 2 mode
|
|
* @arg PWR_BACKUP_VOLTAGE_SCALE3: voltage output Scale 3 mode
|
|
* @arg PWR_BACKUP_VOLTAGE_SCALE4: voltage output Scale 4 mode
|
|
* @retval None
|
|
*/
|
|
#define __HAL_PWR_BKUPVOLTAGESCALING_CONFIG(__REGULATOR__) do { \
|
|
__IO uint32_t tmpreg = 0x00U; \
|
|
MODIFY_REG(PWR->CR, PWR_CR_BKPVR_VOS, (__REGULATOR__)); \
|
|
/* Delay after an RCC peripheral clock enabling */ \
|
|
tmpreg = READ_BIT(PWR->CR, PWR_CR_BKPVR_VOS); \
|
|
UNUSED(tmpreg); \
|
|
} while(0U)
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported Functions --------------------------------------------------------*/
|
|
/** @defgroup PWREx_Exported_Functions PWREx Exported Functions
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup PWREx_Exported_Functions_Group1
|
|
* @{
|
|
*/
|
|
void HAL_PWREx_SetWakeupFlashDelay(uint32_t DelayTime);
|
|
uint32_t HAL_PWREx_GetWakeupFlashDelay(void);
|
|
void HAL_PWREx_DisableHSIWakeupWait(void);
|
|
uint32_t HAL_PWREx_GetVoltageRange(void);
|
|
void HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling);
|
|
|
|
void HAL_PWREx_SetWakeupMrReadyDelay(uint32_t DelayTime);
|
|
uint32_t HAL_PWREx_GetWakeupMrReadyDelay(void);
|
|
void HAL_PWREx_ControlBkUpVoltageScaling(uint32_t VoltageScaling);
|
|
uint32_t HAL_PWREx_GetBkUpVoltageRange(void);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private types -------------------------------------------------------------*/
|
|
/* Private variables ---------------------------------------------------------*/
|
|
/* Private constants ---------------------------------------------------------*/
|
|
/** @defgroup PWREx_Private_Constants PWREx Private Constants
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup PWR_FLASH_WAKEUP_DELAY Flash wakeup delay time
|
|
* @{
|
|
*/
|
|
#define PWR_WAKEUP_FLASH_DELAY_3US 0x00000000U
|
|
#define PWR_WAKEUP_FLASH_DELAY_5US PWR_CR_FLS_WUPT_0
|
|
#define PWR_WAKEUP_FLASH_DELAY_2US PWR_CR_FLS_WUPT_1
|
|
#define PWR_WAKEUP_FLASH_DELAY_0US (PWR_CR_FLS_WUPT_0 | PWR_CR_FLS_WUPT_1)
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup PWR_MRREADY_WAKEUP_DELAY standby wakeup MR ready delay time
|
|
* @{
|
|
*/
|
|
#define PWR_WAKEUP_MRREADY_DELAY_5US 0x00000000U
|
|
#define PWR_WAKEUP_MRREADY_DELAY_10US PWR_CR_STDBY_MRRDY_WAIT_0
|
|
#define PWR_WAKEUP_MRREADY_DELAY_20US PWR_CR_STDBY_MRRDY_WAIT_1
|
|
#define PWR_WAKEUP_MRREADY_DELAY_30US (PWR_CR_STDBY_MRRDY_WAIT_0 | PWR_CR_STDBY_MRRDY_WAIT_1)
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private macros ------------------------------------------------------------*/
|
|
/** @defgroup PWREx_Private_Macros PWREx Private Macros
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters
|
|
* @{
|
|
*/
|
|
#define IS_PWR_VOLTAGE_SCALING_RANGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \
|
|
((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \
|
|
((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE3) || \
|
|
((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE4))
|
|
|
|
#define IS_PWR_BKUPVOLTAGE_SCALING_RANGE(VOLTAGE) (((VOLTAGE) == PWR_BACKUP_VOLTAGE_SCALE1) || \
|
|
((VOLTAGE) == PWR_BACKUP_VOLTAGE_SCALE2) || \
|
|
((VOLTAGE) == PWR_BACKUP_VOLTAGE_SCALE3) || \
|
|
((VOLTAGE) == PWR_BACKUP_VOLTAGE_SCALE4))
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* __PY32F403_HAL_PWR_EX_H */
|
|
|
|
/************************ (C) COPYRIGHT Puya *****END OF FILE******************/
|