hal_pwr.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file hal_pwr.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE PWR
  5. /// FIRMWARE LIBRARY.
  6. ////////////////////////////////////////////////////////////////////////////////
  7. /// @attention
  8. ///
  9. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  10. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  11. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  12. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  13. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  14. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  15. ///
  16. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __HAL_PWR_H
  20. #define __HAL_PWR_H
  21. // Files includes
  22. #include "types.h"
  23. #include "reg_pwr.h"
  24. #include "reg_syscfg.h"
  25. ////////////////////////////////////////////////////////////////////////////////
  26. /// @addtogroup MM32_Hardware_Abstract_Layer
  27. /// @{
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @defgroup PWR_HAL
  30. /// @brief PWR HAL modules
  31. /// @{
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @defgroup PWR_Exported_Types
  34. /// @{
  35. typedef enum {
  36. emWUP_Pin1 = 0,
  37. emWUP_Pin2 = 1,
  38. emWUP_Pin3,
  39. emWUP_Pin4,
  40. emWUP_Pin5,
  41. emWUP_Pin6,
  42. } emWUP_Pin_Typedef;
  43. ////////////////////////////////////////////////////////////////////////////////
  44. /// @brief PVD_detection_level
  45. typedef enum {
  46. emPVD_LEVEL0 = SYSCFG_PDETCSR_PLS_1V7,
  47. emPVD_LEVEL1 = SYSCFG_PDETCSR_PLS_2V0,
  48. emPVD_LEVEL2 = SYSCFG_PDETCSR_PLS_2V3,
  49. emPVD_LEVEL3 = SYSCFG_PDETCSR_PLS_2V6,
  50. emPVD_LEVEL4 = SYSCFG_PDETCSR_PLS_2V9,
  51. emPVD_LEVEL5 = SYSCFG_PDETCSR_PLS_3V2,
  52. emPVD_LEVEL6 = SYSCFG_PDETCSR_PLS_3V5,
  53. emPVD_LEVEL7 = SYSCFG_PDETCSR_PLS_3V8,
  54. emPVD_LEVEL8 = SYSCFG_PDETCSR_PLS_4V1,
  55. emPVD_LEVEL9 = SYSCFG_PDETCSR_PLS_4V4,
  56. emPVD_LEVEL10 = SYSCFG_PDETCSR_PLS_4V7
  57. } emPVD_Level_Typedef;
  58. #define PWR_PVDLevel_1V7 SYSCFG_PDETCSR_PLS_1V7
  59. #define PWR_PVDLevel_2V0 SYSCFG_PDETCSR_PLS_2V0
  60. #define PWR_PVDLevel_2V3 SYSCFG_PDETCSR_PLS_2V3
  61. #define PWR_PVDLevel_2V6 SYSCFG_PDETCSR_PLS_2V6
  62. #define PWR_PVDLevel_2V9 SYSCFG_PDETCSR_PLS_2V9
  63. #define PWR_PVDLevel_3V2 SYSCFG_PDETCSR_PLS_3V2
  64. #define PWR_PVDLevel_3V5 SYSCFG_PDETCSR_PLS_3V5
  65. #define PWR_PVDLevel_3V8 SYSCFG_PDETCSR_PLS_3V8
  66. #define PWR_PVDLevel_4V1 SYSCFG_PDETCSR_PLS_4V1
  67. #define PWR_PVDLevel_4V4 SYSCFG_PDETCSR_PLS_4V4
  68. #define PWR_PVDLevel_4V7 SYSCFG_PDETCSR_PLS_4V7
  69. /// @brief Regulator_state_is_STOP_mode
  70. typedef enum {
  71. PWR_Regulator_ON = 0x00000000,
  72. PWR_Regulator_LowPower = 0x00000001
  73. } emPWR_Reg_Stop_mode_Typedef;
  74. /// @brief STOP_mode_entry
  75. typedef enum {
  76. PWR_STOPEntry_WFI = 0x00000001,
  77. PWR_STOPEntry_WFE = 0x00000002
  78. } emPWR_STOP_ModeEn_Typedef;
  79. /// @brief Low Power Mode
  80. typedef enum {
  81. LP_STOP_MODE = 0,
  82. LP_SLEEP_MODE = 1,
  83. LP_STANDBY_MODE = 2
  84. } emPWR_LP_Mode_Typedef;
  85. /// @brief Wait_for_mode
  86. typedef enum {
  87. LP_WFI,
  88. LP_WFE
  89. } emPWR_Wait_Mode_Typedef;
  90. //typedef enum {
  91. // PWR_FLAG_WU = PWR_CSR_WUF,
  92. // PWR_FLAG_SB = PWR_CSR_SBF,
  93. // PWR_FLAG_PVDO = PWR_CSR_PVDO
  94. //} emPWR_PWR_Flag_Typedef;
  95. /// @}
  96. ///////////////////////////////////////////////////////////////////////////////
  97. /// @defgroup PWR_Exported_Variables
  98. /// @{
  99. #ifdef _HAL_PWR_C_
  100. #define GLOBAL
  101. #else
  102. #define GLOBAL extern
  103. #endif
  104. #undef GLOBAL
  105. /// @}
  106. ////////////////////////////////////////////////////////////////////////////////
  107. /// @defgroup PWR_Exported_Functions
  108. /// @{
  109. void PWR_DeInit(void);
  110. void PWR_BackupAccessCmd(FunctionalState state);
  111. void PWR_PVDCmd(FunctionalState state);
  112. void PWR_PVDLevelConfig(emPVD_Level_Typedef pvd_level);
  113. void PWR_WakeUpPinCmd(FunctionalState state);
  114. void PWR_EnterSTOPMode(emPWR_Reg_Stop_mode_Typedef regulator, emPWR_STOP_ModeEn_Typedef stop_entry);
  115. void PWR_EnterSTANDBYMode(void);
  116. void PWR_ClearFlag(u32 flag);
  117. FlagStatus PWR_GetFlagStatus(u32 flag);
  118. FlagStatus PWR_GetPVDOFlagStatus(u32 flag);
  119. void exPWR_EnterLowPowerMode(emPWR_LP_Mode_Typedef lp_mode, emPWR_Wait_Mode_Typedef wait_mode);
  120. /// @}
  121. /// @}
  122. /// @}
  123. ////////////////////////////////////////////////////////////////////////////////
  124. #endif // __HAL_PWR_H
  125. ////////////////////////////////////////////////////////////////////////////////