stm32f10x_wwdg.c
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:7k
源码类别:

uCOS

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : stm32f10x_wwdg.c
  3. * Author             : MCD Application Team
  4. * Version            : V2.0.2
  5. * Date               : 07/11/2008
  6. * Description        : This file provides all the WWDG firmware functions.
  7. ********************************************************************************
  8. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  9. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  10. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  11. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  12. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  13. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  14. *******************************************************************************/
  15. /* Includes ------------------------------------------------------------------*/
  16. #include "stm32f10x_wwdg.h"
  17. #include "stm32f10x_rcc.h"
  18. /* Private typedef -----------------------------------------------------------*/
  19. /* Private define ------------------------------------------------------------*/
  20. /* ----------- WWDG registers bit address in the alias region ----------- */
  21. #define WWDG_OFFSET       (WWDG_BASE - PERIPH_BASE)
  22. /* Alias word address of EWI bit */
  23. #define CFR_OFFSET        (WWDG_OFFSET + 0x04)
  24. #define EWI_BitNumber     0x09
  25. #define CFR_EWI_BB        (PERIPH_BB_BASE + (CFR_OFFSET * 32) + (EWI_BitNumber * 4))
  26. /* --------------------- WWDG registers bit mask ------------------------ */
  27. /* CR register bit mask */
  28. #define CR_WDGA_Set       ((u32)0x00000080)
  29. /* CFR register bit mask */
  30. #define CFR_WDGTB_Mask    ((u32)0xFFFFFE7F)
  31. #define CFR_W_Mask        ((u32)0xFFFFFF80)
  32. #define BIT_Mask          ((u8)0x7F)
  33. /* Private macro -------------------------------------------------------------*/
  34. /* Private variables ---------------------------------------------------------*/
  35. /* Private function prototypes -----------------------------------------------*/
  36. /* Private functions ---------------------------------------------------------*/
  37. /*******************************************************************************
  38. * Function Name  : WWDG_DeInit
  39. * Description    : Deinitializes the WWDG  peripheral registers to their default
  40. *                  reset values.
  41. * Input          : None
  42. * Output         : None
  43. * Return         : None
  44. *******************************************************************************/
  45. void WWDG_DeInit(void)
  46. {
  47.   RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE);
  48.   RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE);
  49. }
  50. /*******************************************************************************
  51. * Function Name  : WWDG_SetPrescaler
  52. * Description    : Sets the WWDG Prescaler.
  53. * Input          : - WWDG_Prescaler: specifies the WWDG Prescaler.
  54. *                    This parameter can be one of the following values:
  55. *                       - WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
  56. *                       - WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
  57. *                       - WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
  58. *                       - WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
  59. * Output         : None
  60. * Return         : None
  61. *******************************************************************************/
  62. void WWDG_SetPrescaler(u32 WWDG_Prescaler)
  63. {
  64.   u32 tmpreg = 0;
  65.   /* Check the parameters */
  66.   assert_param(IS_WWDG_PRESCALER(WWDG_Prescaler));
  67.   /* Clear WDGTB[1:0] bits */
  68.   tmpreg = WWDG->CFR & CFR_WDGTB_Mask;
  69.   /* Set WDGTB[1:0] bits according to WWDG_Prescaler value */
  70.   tmpreg |= WWDG_Prescaler;
  71.   /* Store the new value */
  72.   WWDG->CFR = tmpreg;
  73. }
  74. /*******************************************************************************
  75. * Function Name  : WWDG_SetWindowValue
  76. * Description    : Sets the WWDG window value.
  77. * Input          : - WindowValue: specifies the window value to be compared to
  78. *                    the downcounter.
  79. *                    This parameter value must be lower than 0x80.
  80. * Output         : None
  81. * Return         : None
  82. *******************************************************************************/
  83. void WWDG_SetWindowValue(u8 WindowValue)
  84. {
  85.   u32 tmpreg = 0;
  86.   /* Check the parameters */
  87.   assert_param(IS_WWDG_WINDOW_VALUE(WindowValue));
  88.   /* Clear W[6:0] bits */
  89.   tmpreg = WWDG->CFR & CFR_W_Mask;
  90.   /* Set W[6:0] bits according to WindowValue value */
  91.   tmpreg |= WindowValue & BIT_Mask;
  92.   /* Store the new value */
  93.   WWDG->CFR = tmpreg;
  94. }
  95. /*******************************************************************************
  96. * Function Name  : WWDG_EnableIT
  97. * Description    : Enables the WWDG Early Wakeup interrupt(EWI).
  98. * Input          : None
  99. * Output         : None
  100. * Return         : None
  101. *******************************************************************************/
  102. void WWDG_EnableIT(void)
  103. {
  104.   *(vu32 *) CFR_EWI_BB = (u32)ENABLE;
  105. }
  106. /*******************************************************************************
  107. * Function Name  : WWDG_SetCounter
  108. * Description    : Sets the WWDG counter value.
  109. * Input          : - Counter: specifies the watchdog counter value.
  110. *                    This parameter must be a number between 0x40 and 0x7F.
  111. * Output         : None
  112. * Return         : None
  113. *******************************************************************************/
  114. void WWDG_SetCounter(u8 Counter)
  115. {
  116.   /* Check the parameters */
  117.   assert_param(IS_WWDG_COUNTER(Counter));
  118.   /* Write to T[6:0] bits to configure the counter value, no need to do
  119.      a read-modify-write; writing a 0 to WDGA bit does nothing */
  120.   WWDG->CR = Counter & BIT_Mask;
  121. }
  122. /*******************************************************************************
  123. * Function Name  : WWDG_Enable
  124. * Description    : Enables WWDG and load the counter value.
  125. *                  - Counter: specifies the watchdog counter value.
  126. *                    This parameter must be a number between 0x40 and 0x7F.
  127. * Input          : None
  128. * Output         : None
  129. * Return         : None
  130. *******************************************************************************/
  131. void WWDG_Enable(u8 Counter)
  132. {
  133.   /* Check the parameters */
  134.   assert_param(IS_WWDG_COUNTER(Counter));
  135.   WWDG->CR = CR_WDGA_Set | Counter;
  136. }
  137. /*******************************************************************************
  138. * Function Name  : WWDG_GetFlagStatus
  139. * Description    : Checks whether the Early Wakeup interrupt flag is set or not.
  140. * Input          : None
  141. * Output         : None
  142. * Return         : The new state of the Early Wakeup interrupt flag (SET or RESET)
  143. *******************************************************************************/
  144. FlagStatus WWDG_GetFlagStatus(void)
  145. {
  146.   return (FlagStatus)(WWDG->SR);
  147. }
  148. /*******************************************************************************
  149. * Function Name  : WWDG_ClearFlag
  150. * Description    : Clears Early Wakeup interrupt flag.
  151. * Input          : None
  152. * Output         : None
  153. * Return         : None
  154. *******************************************************************************/
  155. void WWDG_ClearFlag(void)
  156. {
  157.   WWDG->SR = (u32)RESET;
  158. }
  159. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/