at32f415_pwc.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /**
  2. **************************************************************************
  3. * @file at32f415_pwc.h
  4. * @version v2.0.5
  5. * @date 2022-05-20
  6. * @brief at32f415 pwc header file
  7. **************************************************************************
  8. * Copyright notice & Disclaimer
  9. *
  10. * The software Board Support Package (BSP) that is made available to
  11. * download from Artery official website is the copyrighted work of Artery.
  12. * Artery authorizes customers to use, copy, and distribute the BSP
  13. * software and its related documentation for the purpose of design and
  14. * development in conjunction with Artery microcontrollers. Use of the
  15. * software is governed by this copyright notice and the following disclaimer.
  16. *
  17. * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
  18. * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
  19. * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
  20. * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
  21. * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
  22. * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
  23. *
  24. **************************************************************************
  25. */
  26. /* Define to prevent recursive inclusion -------------------------------------*/
  27. #ifndef __AT32F415_PWC_H
  28. #define __AT32F415_PWC_H
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32. /* Includes ------------------------------------------------------------------*/
  33. #include "at32f415.h"
  34. /** @addtogroup AT32F415_periph_driver
  35. * @{
  36. */
  37. /** @addtogroup PWC
  38. * @{
  39. */
  40. /** @defgroup PWC_flags_definition
  41. * @brief pwc flag
  42. * @{
  43. */
  44. #define PWC_WAKEUP_FLAG ((uint32_t)0x00000001) /*!< wakeup flag */
  45. #define PWC_STANDBY_FLAG ((uint32_t)0x00000002) /*!< standby flag */
  46. #define PWC_PVM_OUTPUT_FLAG ((uint32_t)0x00000004) /*!< pvm output flag */
  47. /**
  48. * @}
  49. */
  50. /**
  51. * @brief pwc wakeup pin num definition
  52. */
  53. #define PWC_WAKEUP_PIN_1 ((uint32_t)0x00000100) /*!< standby wake-up pin1 */
  54. /** @defgroup PWC_exported_types
  55. * @{
  56. */
  57. /**
  58. * @brief pwc pvm voltage type
  59. */
  60. typedef enum
  61. {
  62. PWC_PVM_VOLTAGE_2V3 = 0x01, /*!< power voltage monitoring boundary 2.3v */
  63. PWC_PVM_VOLTAGE_2V4 = 0x02, /*!< power voltage monitoring boundary 2.4v */
  64. PWC_PVM_VOLTAGE_2V5 = 0x03, /*!< power voltage monitoring boundary 2.5v */
  65. PWC_PVM_VOLTAGE_2V6 = 0x04, /*!< power voltage monitoring boundary 2.6v */
  66. PWC_PVM_VOLTAGE_2V7 = 0x05, /*!< power voltage monitoring boundary 2.7v */
  67. PWC_PVM_VOLTAGE_2V8 = 0x06, /*!< power voltage monitoring boundary 2.8v */
  68. PWC_PVM_VOLTAGE_2V9 = 0x07 /*!< power voltage monitoring boundary 2.9v */
  69. } pwc_pvm_voltage_type;
  70. /**
  71. * @brief pwc sleep enter type
  72. */
  73. typedef enum
  74. {
  75. PWC_SLEEP_ENTER_WFI = 0x00, /*!< use wfi enter sleep mode */
  76. PWC_SLEEP_ENTER_WFE = 0x01 /*!< use wfe enter sleep mode */
  77. } pwc_sleep_enter_type;
  78. /**
  79. * @brief pwc deep sleep enter type
  80. */
  81. typedef enum
  82. {
  83. PWC_DEEP_SLEEP_ENTER_WFI = 0x00, /*!< use wfi enter deepsleep mode */
  84. PWC_DEEP_SLEEP_ENTER_WFE = 0x01 /*!< use wfe enter deepsleep mode */
  85. } pwc_deep_sleep_enter_type;
  86. /**
  87. * @brief pwc regulator type
  88. */
  89. typedef enum
  90. {
  91. PWC_REGULATOR_ON = 0x00, /*!< voltage regulator state on when deepsleep mode */
  92. PWC_REGULATOR_LOW_POWER = 0x01 /*!< voltage regulator state low power when deepsleep mode */
  93. } pwc_regulator_type;
  94. /**
  95. * @brief type define pwc register all
  96. */
  97. typedef struct
  98. {
  99. /**
  100. * @brief pwc ctrl register, offset:0x00
  101. */
  102. union
  103. {
  104. __IO uint32_t ctrl;
  105. struct
  106. {
  107. __IO uint32_t vrsel : 1; /* [0] */
  108. __IO uint32_t lpsel : 1; /* [1] */
  109. __IO uint32_t clswef : 1; /* [2] */
  110. __IO uint32_t clsef : 1; /* [3] */
  111. __IO uint32_t pvmen : 1; /* [4] */
  112. __IO uint32_t pvmsel : 3; /* [7:5] */
  113. __IO uint32_t bpwen : 1; /* [8] */
  114. __IO uint32_t reserved1 : 23;/* [31:9] */
  115. } ctrl_bit;
  116. };
  117. /**
  118. * @brief pwc ctrlsts register, offset:0x04
  119. */
  120. union
  121. {
  122. __IO uint32_t ctrlsts;
  123. struct
  124. {
  125. __IO uint32_t swef : 1; /* [0] */
  126. __IO uint32_t sef : 1; /* [1] */
  127. __IO uint32_t pvmof : 1; /* [2] */
  128. __IO uint32_t reserved1 : 5; /* [7:3] */
  129. __IO uint32_t swpen : 1; /* [8] */
  130. __IO uint32_t reserved2 : 23;/* [31:9] */
  131. } ctrlsts_bit;
  132. };
  133. } pwc_type;
  134. /**
  135. * @}
  136. */
  137. #define PWC ((pwc_type *) PWC_BASE)
  138. /** @defgroup PWC_exported_functions
  139. * @{
  140. */
  141. void pwc_reset(void);
  142. void pwc_battery_powered_domain_access(confirm_state new_state);
  143. void pwc_pvm_level_select(pwc_pvm_voltage_type pvm_voltage);
  144. void pwc_power_voltage_monitor_enable(confirm_state new_state);
  145. void pwc_wakeup_pin_enable(uint32_t pin_num, confirm_state new_state);
  146. void pwc_flag_clear(uint32_t pwc_flag);
  147. flag_status pwc_flag_get(uint32_t pwc_flag);
  148. void pwc_sleep_mode_enter(pwc_sleep_enter_type pwc_sleep_enter);
  149. void pwc_deep_sleep_mode_enter(pwc_deep_sleep_enter_type pwc_deep_sleep_enter);
  150. void pwc_voltage_regulate_set(pwc_regulator_type pwc_regulator);
  151. void pwc_standby_mode_enter(void);
  152. /**
  153. * @}
  154. */
  155. /**
  156. * @}
  157. */
  158. /**
  159. * @}
  160. */
  161. #ifdef __cplusplus
  162. }
  163. #endif
  164. #endif