1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/*!
* @file apm32f4xx_pmu.h
*
* @brief This file contains all the functions prototypes for the PMU firmware library.
*
* @version V1.0.2
*
* @date 2022-06-23
*
* @attention
*
* Copyright (C) 2021-2022 Geehy Semiconductor
*
* You may not use this file except in compliance with the
* GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
*
* The program is only for reference, which is distributed in the hope
* that it will be usefull and instructional for customers to develop
* their software. Unless required by applicable law or agreed to in
* writing, the program is distributed on an "AS IS" BASIS, WITHOUT
* ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
* See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
* and limitations under the License.
*/
/* Define to prevent recursive inclusion */
#ifndef __APM32F4XX_PMU_H
#define __APM32F4XX_PMU_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes */
#include "apm32f4xx.h"
/** @addtogroup APM32F4xx_StdPeriphDriver
@{
*/
/** @addtogroup PMU_Driver
@{
*/
/** @defgroup PMU_Enumerations
@{
*/
/**
* @brief PMU PVD detection level
*/
typedef enum
{
PMU_PVD_LEVEL_2V0 = 0x00, /*!< PVD detection level set to 2.0V */
PMU_PVD_LEVEL_2V1 = 0x01, /*!< PVD detection level set to 2.1V */
PMU_PVD_LEVEL_2V3 = 0x02, /*!< PVD detection level set to 2.3V */
PMU_PVD_LEVEL_2V5 = 0x03, /*!< PVD detection level set to 2.5V */
PMU_PVD_LEVEL_2V6 = 0x04, /*!< PVD detection level set to 2.6V */
PMU_PVD_LEVEL_2V7 = 0x05, /*!< PVD detection level set to 2.7V */
PMU_PVD_LEVEL_2V8 = 0x06, /*!< PVD detection level set to 2.8V */
PMU_PVD_LEVEL_2V9 = 0x07, /*!< PVD detection level set to 2.9V */
} PMU_PVD_LEVEL_T;
/**
* @brief PMU Regulator state in STOP mode
*/
typedef enum
{
PMU_REGULATOR_ON = 0x00, /*!< STOP mode with regulator ON */
PMU_REGULATOR_LOWPOWER = 0x01 /*!< STOP mode with regulator in low power mode */
} PMU_REGULATOR_T;
/**
* @brief PMU STOP mode entry
*/
typedef enum
{
PMU_STOP_ENTRY_WFI = 0x01, /*!< Enter STOP mode with WFI instruction */
PMU_STOP_ENTRY_WFE = 0x02 /*!< Enter STOP mode with WFE instruction */
} PMU_STOP_ENTRY_T;
/**
* @brief PMU Regulator Voltage Scale
*/
typedef enum
{
PMU_REGULATOR_VOLTAGE_SCALE1 = 0x03, /*!< Select regulator voltage scale 1 */
PMU_REGULATOR_VOLTAGE_SCALE2 = 0x02, /*!< Select regulator voltage scale 2 */
PMU_REGULATOR_VOLTAGE_SCALE3 = 0x01, /*!< Select regulator voltage scale 3 */
} PMU_REGULATOR_VOLTAGE_SCALE_T;
/**
* @brief PMU Flag
*/
typedef enum
{
PMU_FLAG_WUE, /*!< Wake Up flag */
PMU_FLAG_SB, /*!< StandBy flag */
PMU_FLAG_PVDO, /*!< PVD Output */
PMU_FLAG_BKPR, /*!< Backup regulator ready flag */
PMU_FLAG_VOSR /*!< This flag indicates that the Regulator voltage
scaling output selection is ready */
} PMU_FLAG_T;
/**@} end of group PMU_Enumerations*/
/** @defgroup PMU_Functions
@{
*/
/* PMU Reset */
void PMU_Reset(void);
/* Configuration and Operation modes */
void PMU_EnableBackupAccess(void);
void PMU_DisableBackupAccess(void);
void PMU_EnablePVD(void);
void PMU_DisablePVD(void);
void PMU_ConfigPVDLevel(PMU_PVD_LEVEL_T level);
void PMU_EnableWakeUpPin(void);
void PMU_DisableWakeUpPin(void);
void PMU_EnableBackupRegulator(void);
void PMU_DisableBackupRegulator(void);
void PMU_ConfigMainRegulatorMode(PMU_REGULATOR_VOLTAGE_SCALE_T scale);
void PMU_EnableFlashPowerDown(void);
void PMU_DisableFlashPowerDown(void);
void PMU_EnterSTOPMode(PMU_REGULATOR_T regulator, PMU_STOP_ENTRY_T entry);
void PMU_EnterSTANDBYMode(void);
/* flags */
uint8_t PMU_ReadStatusFlag(PMU_FLAG_T flag);
void PMU_ClearStatusFlag(PMU_FLAG_T flag);
#ifdef __cplusplus
}
#endif
#endif /* __APM32F4XX_PMU_H */
/**@} end of group PMU_Enumerations */
/**@} end of group PMU_Driver */
/**@} end of group APM32F4xx_StdPeriphDriver */
|