DSO138_SourceCodes_v037.rar
[DSO138] / Libraries / STM32F10x_StdPeriph_Driver / src / stm32f10x_iwdg.c
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f10x_iwdg.c\r
4   * @author  MCD Application Team\r
5   * @version V3.3.0\r
6   * @date    04/16/2010\r
7   * @brief   This file provides all the IWDG firmware functions.\r
8   ******************************************************************************\r
9   * @copy\r
10   *\r
11   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
12   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
13   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
14   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
15   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
16   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
17   *\r
18   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
19   */ \r
20 \r
21 /* Includes ------------------------------------------------------------------*/\r
22 #include "stm32f10x_iwdg.h"\r
23 \r
24 /** @addtogroup STM32F10x_StdPeriph_Driver\r
25   * @{\r
26   */\r
27 \r
28 /** @defgroup IWDG \r
29   * @brief IWDG driver modules\r
30   * @{\r
31   */ \r
32 \r
33 /** @defgroup IWDG_Private_TypesDefinitions\r
34   * @{\r
35   */\r
36 \r
37 /**\r
38   * @}\r
39   */\r
40 \r
41 /** @defgroup IWDG_Private_Defines\r
42   * @{\r
43   */ \r
44 \r
45 /* ---------------------- IWDG registers bit mask ----------------------------*/\r
46 \r
47 /* KR register bit mask */\r
48 #define KR_KEY_Reload    ((uint16_t)0xAAAA)\r
49 #define KR_KEY_Enable    ((uint16_t)0xCCCC)\r
50 \r
51 /**\r
52   * @}\r
53   */ \r
54 \r
55 /** @defgroup IWDG_Private_Macros\r
56   * @{\r
57   */\r
58 \r
59 /**\r
60   * @}\r
61   */\r
62 \r
63 /** @defgroup IWDG_Private_Variables\r
64   * @{\r
65   */\r
66 \r
67 /**\r
68   * @}\r
69   */\r
70 \r
71 /** @defgroup IWDG_Private_FunctionPrototypes\r
72   * @{\r
73   */\r
74 \r
75 /**\r
76   * @}\r
77   */\r
78 \r
79 /** @defgroup IWDG_Private_Functions\r
80   * @{\r
81   */\r
82 \r
83 /**\r
84   * @brief  Enables or disables write access to IWDG_PR and IWDG_RLR registers.\r
85   * @param  IWDG_WriteAccess: new state of write access to IWDG_PR and IWDG_RLR registers.\r
86   *   This parameter can be one of the following values:\r
87   *     @arg IWDG_WriteAccess_Enable: Enable write access to IWDG_PR and IWDG_RLR registers\r
88   *     @arg IWDG_WriteAccess_Disable: Disable write access to IWDG_PR and IWDG_RLR registers\r
89   * @retval None\r
90   */\r
91 void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess)\r
92 {\r
93   /* Check the parameters */\r
94   assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));\r
95   IWDG->KR = IWDG_WriteAccess;\r
96 }\r
97 \r
98 /**\r
99   * @brief  Sets IWDG Prescaler value.\r
100   * @param  IWDG_Prescaler: specifies the IWDG Prescaler value.\r
101   *   This parameter can be one of the following values:\r
102   *     @arg IWDG_Prescaler_4: IWDG prescaler set to 4\r
103   *     @arg IWDG_Prescaler_8: IWDG prescaler set to 8\r
104   *     @arg IWDG_Prescaler_16: IWDG prescaler set to 16\r
105   *     @arg IWDG_Prescaler_32: IWDG prescaler set to 32\r
106   *     @arg IWDG_Prescaler_64: IWDG prescaler set to 64\r
107   *     @arg IWDG_Prescaler_128: IWDG prescaler set to 128\r
108   *     @arg IWDG_Prescaler_256: IWDG prescaler set to 256\r
109   * @retval None\r
110   */\r
111 void IWDG_SetPrescaler(uint8_t IWDG_Prescaler)\r
112 {\r
113   /* Check the parameters */\r
114   assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler));\r
115   IWDG->PR = IWDG_Prescaler;\r
116 }\r
117 \r
118 /**\r
119   * @brief  Sets IWDG Reload value.\r
120   * @param  Reload: specifies the IWDG Reload value.\r
121   *   This parameter must be a number between 0 and 0x0FFF.\r
122   * @retval None\r
123   */\r
124 void IWDG_SetReload(uint16_t Reload)\r
125 {\r
126   /* Check the parameters */\r
127   assert_param(IS_IWDG_RELOAD(Reload));\r
128   IWDG->RLR = Reload;\r
129 }\r
130 \r
131 /**\r
132   * @brief  Reloads IWDG counter with value defined in the reload register\r
133   *   (write access to IWDG_PR and IWDG_RLR registers disabled).\r
134   * @param  None\r
135   * @retval None\r
136   */\r
137 void IWDG_ReloadCounter(void)\r
138 {\r
139   IWDG->KR = KR_KEY_Reload;\r
140 }\r
141 \r
142 /**\r
143   * @brief  Enables IWDG (write access to IWDG_PR and IWDG_RLR registers disabled).\r
144   * @param  None\r
145   * @retval None\r
146   */\r
147 void IWDG_Enable(void)\r
148 {\r
149   IWDG->KR = KR_KEY_Enable;\r
150 }\r
151 \r
152 /**\r
153   * @brief  Checks whether the specified IWDG flag is set or not.\r
154   * @param  IWDG_FLAG: specifies the flag to check.\r
155   *   This parameter can be one of the following values:\r
156   *     @arg IWDG_FLAG_PVU: Prescaler Value Update on going\r
157   *     @arg IWDG_FLAG_RVU: Reload Value Update on going\r
158   * @retval The new state of IWDG_FLAG (SET or RESET).\r
159   */\r
160 FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG)\r
161 {\r
162   FlagStatus bitstatus = RESET;\r
163   /* Check the parameters */\r
164   assert_param(IS_IWDG_FLAG(IWDG_FLAG));\r
165   if ((IWDG->SR & IWDG_FLAG) != (uint32_t)RESET)\r
166   {\r
167     bitstatus = SET;\r
168   }\r
169   else\r
170   {\r
171     bitstatus = RESET;\r
172   }\r
173   /* Return the flag status */\r
174   return bitstatus;\r
175 }\r
176 \r
177 /**\r
178   * @}\r
179   */\r
180 \r
181 /**\r
182   * @}\r
183   */\r
184 \r
185 /**\r
186   * @}\r
187   */\r
188 \r
189 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r