]> jspc29.x-matter.uni-frankfurt.de Git - mvd_firmware.git/blob
9d3b0e855a13e9e6ce1b400604bc321a3dd10a96
[mvd_firmware.git] /
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f10x_iwdg.c\r
4   * @author  MCD Application Team\r
5   * @version V3.5.0\r
6   * @date    11-March-2011\r
7   * @brief   This file provides all the IWDG firmware functions.\r
8   ******************************************************************************\r
9   * @attention\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 2011 STMicroelectronics</center></h2>\r
19   ******************************************************************************\r
20   */\r
21 \r
22 /* Includes ------------------------------------------------------------------*/\r
23 #include "stm32f10x_iwdg.h"\r
24 \r
25 /** @addtogroup STM32F10x_StdPeriph_Driver\r
26   * @{\r
27   */\r
28 \r
29 /** @defgroup IWDG \r
30   * @brief IWDG driver modules\r
31   * @{\r
32   */ \r
33 \r
34 /** @defgroup IWDG_Private_TypesDefinitions\r
35   * @{\r
36   */\r
37 \r
38 /**\r
39   * @}\r
40   */\r
41 \r
42 /** @defgroup IWDG_Private_Defines\r
43   * @{\r
44   */ \r
45 \r
46 /* ---------------------- IWDG registers bit mask ----------------------------*/\r
47 \r
48 /* KR register bit mask */\r
49 #define KR_KEY_Reload    ((uint16_t)0xAAAA)\r
50 #define KR_KEY_Enable    ((uint16_t)0xCCCC)\r
51 \r
52 /**\r
53   * @}\r
54   */ \r
55 \r
56 /** @defgroup IWDG_Private_Macros\r
57   * @{\r
58   */\r
59 \r
60 /**\r
61   * @}\r
62   */\r
63 \r
64 /** @defgroup IWDG_Private_Variables\r
65   * @{\r
66   */\r
67 \r
68 /**\r
69   * @}\r
70   */\r
71 \r
72 /** @defgroup IWDG_Private_FunctionPrototypes\r
73   * @{\r
74   */\r
75 \r
76 /**\r
77   * @}\r
78   */\r
79 \r
80 /** @defgroup IWDG_Private_Functions\r
81   * @{\r
82   */\r
83 \r
84 /**\r
85   * @brief  Enables or disables write access to IWDG_PR and IWDG_RLR registers.\r
86   * @param  IWDG_WriteAccess: new state of write access to IWDG_PR and IWDG_RLR registers.\r
87   *   This parameter can be one of the following values:\r
88   *     @arg IWDG_WriteAccess_Enable: Enable write access to IWDG_PR and IWDG_RLR registers\r
89   *     @arg IWDG_WriteAccess_Disable: Disable write access to IWDG_PR and IWDG_RLR registers\r
90   * @retval None\r
91   */\r
92 void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess)\r
93 {\r
94   /* Check the parameters */\r
95   assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));\r
96   IWDG->KR = IWDG_WriteAccess;\r
97 }\r
98 \r
99 /**\r
100   * @brief  Sets IWDG Prescaler value.\r
101   * @param  IWDG_Prescaler: specifies the IWDG Prescaler value.\r
102   *   This parameter can be one of the following values:\r
103   *     @arg IWDG_Prescaler_4: IWDG prescaler set to 4\r
104   *     @arg IWDG_Prescaler_8: IWDG prescaler set to 8\r
105   *     @arg IWDG_Prescaler_16: IWDG prescaler set to 16\r
106   *     @arg IWDG_Prescaler_32: IWDG prescaler set to 32\r
107   *     @arg IWDG_Prescaler_64: IWDG prescaler set to 64\r
108   *     @arg IWDG_Prescaler_128: IWDG prescaler set to 128\r
109   *     @arg IWDG_Prescaler_256: IWDG prescaler set to 256\r
110   * @retval None\r
111   */\r
112 void IWDG_SetPrescaler(uint8_t IWDG_Prescaler)\r
113 {\r
114   /* Check the parameters */\r
115   assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler));\r
116   IWDG->PR = IWDG_Prescaler;\r
117 }\r
118 \r
119 /**\r
120   * @brief  Sets IWDG Reload value.\r
121   * @param  Reload: specifies the IWDG Reload value.\r
122   *   This parameter must be a number between 0 and 0x0FFF.\r
123   * @retval None\r
124   */\r
125 void IWDG_SetReload(uint16_t Reload)\r
126 {\r
127   /* Check the parameters */\r
128   assert_param(IS_IWDG_RELOAD(Reload));\r
129   IWDG->RLR = Reload;\r
130 }\r
131 \r
132 /**\r
133   * @brief  Reloads IWDG counter with value defined in the reload register\r
134   *   (write access to IWDG_PR and IWDG_RLR registers disabled).\r
135   * @param  None\r
136   * @retval None\r
137   */\r
138 void IWDG_ReloadCounter(void)\r
139 {\r
140   IWDG->KR = KR_KEY_Reload;\r
141 }\r
142 \r
143 /**\r
144   * @brief  Enables IWDG (write access to IWDG_PR and IWDG_RLR registers disabled).\r
145   * @param  None\r
146   * @retval None\r
147   */\r
148 void IWDG_Enable(void)\r
149 {\r
150   IWDG->KR = KR_KEY_Enable;\r
151 }\r
152 \r
153 /**\r
154   * @brief  Checks whether the specified IWDG flag is set or not.\r
155   * @param  IWDG_FLAG: specifies the flag to check.\r
156   *   This parameter can be one of the following values:\r
157   *     @arg IWDG_FLAG_PVU: Prescaler Value Update on going\r
158   *     @arg IWDG_FLAG_RVU: Reload Value Update on going\r
159   * @retval The new state of IWDG_FLAG (SET or RESET).\r
160   */\r
161 FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG)\r
162 {\r
163   FlagStatus bitstatus = RESET;\r
164   /* Check the parameters */\r
165   assert_param(IS_IWDG_FLAG(IWDG_FLAG));\r
166   if ((IWDG->SR & IWDG_FLAG) != (uint32_t)RESET)\r
167   {\r
168     bitstatus = SET;\r
169   }\r
170   else\r
171   {\r
172     bitstatus = RESET;\r
173   }\r
174   /* Return the flag status */\r
175   return bitstatus;\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 \r
190 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/\r