pcu.h
上传用户:yyyd609
上传日期:2022-07-18
资源大小:183k
文件大小:6k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
  2. * File Name          : pcu.h
  3. * Author             : MCD Application Team
  4. * Date First Issued  : 30/05/2003
  5. * Description        : This file contains all the functions prototypes for the
  6. *                      PCU software library.
  7. ********************************************************************************
  8. * History:
  9. *  01/01/2004 : V1.2
  10. *  14/07/2004 : V1.3
  11. *******************************************************************************/
  12. #ifndef __PCU_H
  13. #define __PCU_H
  14. #include "71x_lib.h"
  15. typedef enum
  16. {
  17.   PCU_WREN = 0x8000,
  18.   PCU_VROK = 0x1000
  19. } PCU_Flags;
  20. typedef enum
  21. {
  22.   PCU_STABLE,
  23.   PCU_UNSTABLE
  24. } PCU_VR_Status;
  25. typedef enum
  26. {
  27.   PCU_MVR = 0x0008,
  28.   PCU_LPR = 0x0020
  29. } PCU_VR;
  30. typedef enum
  31. {
  32.   WFI_CLOCK2_16,
  33.   WFI_EXTERNAL
  34. } WFI_CLOCKS;
  35. typedef enum
  36. {
  37.   PCU_SLOW,
  38.   PCU_STOP,
  39.   PCU_STANDBY
  40. } LPM_MODES;
  41. // VR_OK  : Voltage Regulator OK
  42. #define PCU_VROK_Mask       0x1000
  43. // Main Voltage Regulator
  44. #define PCU_MVR_Mask        0x0008
  45. // Low Power Voltage Regulator
  46. #define PCU_LPR_Mask        0x0020
  47. // PCU register Write Enable Bit
  48. #define PCU_WREN_Mask       0x8000
  49. // Low Voltage Detector
  50. #define PCU_LVD_Mask        0x0100
  51. // Power Down Flag
  52. #define PCU_PWRDWN_Mask     0x0040
  53. // WFI Mode Clock Selection Bit
  54. #define PCU_WFI_CKSEL_Mask  0x00000002
  55. // Halt Mode Enable Bit
  56. #define PCU_EN_HALT_Mask    0x00000800
  57. // Halt Mode Flag
  58. #define PCU_HALT_Mask       0x0002
  59. // Stop Mode Enable Bit
  60. #define PCU_STOP_EN_Mask    0x00000400
  61. // Low Power Regulator in Wait For interrupt Mode
  62. #define PCU_LPRWFI_Mask     0x0020
  63. // Low Power Mode in Wait For interrupt Mode
  64. #define PCU_LPOWFI_Mask     0x00000001
  65. // Software Reset Enable
  66. #define PCU_SRESEN_Mask     0x00000001
  67. /*******************************************************************************
  68. * Function Name  : PCU_MVRStatus
  69. * Description    : This routine is used to check the Main Voltage Regulator
  70. *                : NewState.
  71. * Input          : None
  72. * Return         : STABLE, UNSTABLE
  73. *******************************************************************************/
  74. inline PCU_VR_Status PCU_MVRStatus ( void )
  75. {
  76. return (PCU->PWRCR & PCU_VROK_Mask) == 0x00 ? PCU_UNSTABLE : PCU_STABLE;
  77. }
  78. /*******************************************************************************
  79. * Function Name  : PCU_FlagStatus
  80. * Description    : This routine is used to return the PCU register flag
  81. * Input 1        : The flag to get
  82. * Return         : RESET, SET
  83. *******************************************************************************/
  84. inline FlagStatus PCU_FlagStatus ( PCU_Flags Xflag )
  85. {
  86. return ( PCU->PWRCR & Xflag ) == 0x00 ? RESET : SET;
  87. }
  88. /*******************************************************************************
  89. * Function Name  : PCU_VRConfig
  90. * Description    : This routine is used to configure PCU voltage regultors
  91. * Input 1        : MVR : Main voltage Regulator
  92.                    LPR : Low Power Regulator
  93. * Input 2        : ENABLE : Enable the Voltage Regulator
  94.                    DISABLE: Disable ( ByPass ) the VR
  95. * Return         : None
  96. *******************************************************************************/
  97. void PCU_VRConfig ( PCU_VR xVR, FunctionalState NewState );
  98. /*******************************************************************************
  99. * Function Name  : PCU_VRStatus
  100. * Description    : This routine is used to get the PCU voltage regultors status
  101. * Input          : MVR : Main voltage Regulator
  102.                    LPR : Low Power Regulator
  103. * Return         : ENABLE : Enable the Voltage Regulator
  104.                    DISABLE: Disable ( ByPass ) the VR
  105. *******************************************************************************/
  106. inline FunctionalState PCU_VRStatus ( PCU_VR xVR )
  107. {
  108. return ( PCU->PWRCR & xVR ) == 0  ? ENABLE : DISABLE;
  109. }
  110. /*******************************************************************************
  111. * Function Name  : PCU_LVDDisable
  112. * Description    : This routine is used to disable the Low Voltage Detector.
  113. * Input          : None
  114. * Return         : None
  115. *******************************************************************************/
  116. inline void PCU_LVDDisable ( void )
  117. {
  118. PCU->PWRCR |= PCU_WREN_Mask; // Unlock Power Control Register
  119. PCU->PWRCR |= PCU_LVD_Mask; // Set the LVD DIS Flag
  120. }
  121. /*******************************************************************************
  122. * Function Name  : PCU_LVDStatus
  123. * Description    : This routine is used to get the LVD NewState.
  124. * Input          : None
  125. * Return         : ENABLE, DISABLE
  126. *******************************************************************************/
  127. inline FunctionalState PCU_LVDStatus ( void )
  128. {
  129. return ( PCU->PWRCR & PCU_LVD_Mask ) == 0 ? ENABLE : DISABLE;
  130. }
  131. /*******************************************************************************
  132. * Function Name  : PCU_WFIEnter
  133. * Description    : This routine is used to force the Device to enter in WFI mode
  134. * Input 1        : CLOCK2_16 : Clock2_16 as system clock for WFI mode
  135. *                  EXTERNAL  : external clock as system clock for WFI mode
  136. * Input 2        : ENABLE : Enable Low Power Regulator during Wait For Interrupt Mode
  137. *                  DISABLE: Disable Low Power Regulator during Wait For Interrupt Mode
  138. * Input 3        : ENABLE : Enable Low Power Mode during Wait For Interrupt Mode
  139. *                  DISABLE: Disable Low Power Mode during Wait For Interrupt Mode
  140. * Return         : None
  141. *******************************************************************************/
  142. void PCU_WFIEnter ( WFI_CLOCKS Xclock, FunctionalState Xlpr, FunctionalState Xlpm );
  143. /*******************************************************************************
  144. * Function Name  : PCU_LPMEnter
  145. * Description    : This routine is used to force the Device to enter low
  146. *                  power mode
  147. * Input          : SLOW : Slow Mode
  148.                    STOP : Stop Mode
  149.                    HALT : Halt Mode
  150. * Return         : None
  151. *******************************************************************************/
  152. void PCU_LPMEnter ( LPM_MODES Xmode);
  153. #endif // __PCU_H
  154. /******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/