]> git.sur5r.net Git - freertos/blob - Demo/ARM7_STR75x_GCC/STLibrary/src/75x_wdg.c
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ARM7_STR75x_GCC / STLibrary / src / 75x_wdg.c
1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************\r
2 * File Name          : 75x_wdg.c\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 03/10/2006\r
5 * Description        : This file provides all the WDG software functions.\r
6 ********************************************************************************\r
7 * History:\r
8 * 07/17/2006 : V1.0\r
9 * 03/10/2006 : V0.1\r
10 ********************************************************************************\r
11 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
13 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
14 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
15 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
16 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
17 *******************************************************************************/\r
18 \r
19 /* Includes ------------------------------------------------------------------*/\r
20 #include "75x_wdg.h"\r
21 \r
22 /* Private typedef -----------------------------------------------------------*/\r
23 /* Private define ------------------------------------------------------------*/\r
24 /* Private macro -------------------------------------------------------------*/\r
25 /* Private variables ---------------------------------------------------------*/\r
26 /* Registers reset value */\r
27 #define WDG_Preload_Mask     0xFFFF\r
28 #define WDG_Prescaler_Mask   0xFF\r
29 \r
30 /* WDG Start/Stop counter */\r
31 #define WDG_Counter_Start_Mask  0x0002\r
32 #define WDG_Counter_Stop_Mask   0xFFFD\r
33 \r
34 /* WDG Sequence */\r
35 #define WDG_KeyValue1_Mask      0xA55A\r
36 #define WDG_KeyValue2_Mask      0x5AA5\r
37 \r
38 /* Private function prototypes -----------------------------------------------*/\r
39 /* Private functions ---------------------------------------------------------*/\r
40 \r
41 /******************************************************************************\r
42 * Function Name  : WDG_DeInit\r
43 * Description    : Deinitializes the WDG peripheral registers to their default \r
44 *                  reset values.\r
45 * Input          : None\r
46 * Output         : None\r
47 * Return         : None\r
48 *******************************************************************************/\r
49 void WDG_DeInit(void)\r
50 {\r
51   /* Reset all the WDG registers */\r
52   WDG->CR = 0x0000;\r
53   WDG->PR = 0x00FF;\r
54   WDG->VR = 0xFFFF;\r
55   WDG->CNT = 0xFFFF;\r
56   WDG->SR = 0x0000;\r
57   WDG->MR = 0x0000;\r
58   WDG->KR = 0x0000;\r
59 }\r
60 \r
61 /*******************************************************************************\r
62 * Function Name  : WDG_Init\r
63 * Description    : Initializes WDG  peripheral according to the specified\r
64 *                  parameters in the WDG_InitStruct.\r
65 * Input          : WDG_InitStruct: pointer to a WDG_InitTypeDef structure that\r
66 *                  contains the configuration information for the WDG peripheral.\r
67 * Output         : None\r
68 * Return         : None\r
69 *******************************************************************************/\r
70 void WDG_Init(WDG_InitTypeDef* WDG_InitStruct)\r
71 {\r
72   /* Configure WDG Prescaler register value */\r
73   WDG->PR = WDG_InitStruct->WDG_Prescaler;\r
74 \r
75   /* Configure WDG Pre-load register value */\r
76   WDG->VR = WDG_InitStruct->WDG_Preload ;\r
77   \r
78   if(WDG_InitStruct->WDG_Mode == WDG_Mode_WDG)\r
79   {\r
80     /* Select WDG mode */\r
81     WDG->CR |= WDG_Mode_WDG ;\r
82   }\r
83   else\r
84   {\r
85     /* Select Timer mode */\r
86     WDG->CR &= WDG_Mode_Timer;    \r
87   }\r
88 }\r
89 \r
90 /*******************************************************************************\r
91 * Function Name  : WDG_StructInit\r
92 * Description    : Fills each WDG_InitStruct member with its default value.\r
93 * Input          : WDG_InitStruct : pointer to a WDG_InitTypeDef structure\r
94 *                  which will be initialized.\r
95 * Output         : None\r
96 * Return         : None\r
97 *******************************************************************************/\r
98 void WDG_StructInit(WDG_InitTypeDef *WDG_InitStruct)\r
99 {\r
100   /* Initialize mode */\r
101   WDG_InitStruct->WDG_Mode = WDG_Mode_Timer;\r
102 \r
103   /* Initialize Preload */\r
104   WDG_InitStruct->WDG_Preload = WDG_Preload_Mask ;\r
105 \r
106   /* Initialize Prescaler */\r
107   WDG_InitStruct->WDG_Prescaler = WDG_Prescaler_Mask;\r
108 }\r
109 \r
110 /*******************************************************************************\r
111 * Function Name  : WDG_Cmd\r
112 * Description    : Enables or disables the WDG peripheral.\r
113 * Input          : NewState: new state of the WDG peripheral. \r
114 *                  This parameter can be: ENABLE or DISABLE.\r
115 * Output         : None\r
116 * Return         : None\r
117 *******************************************************************************/\r
118 void WDG_Cmd(FunctionalState NewState)\r
119 {\r
120   if((WDG->CR & WDG_Mode_WDG) == 0)\r
121   {\r
122     /* Timer mode */\r
123     if(NewState == ENABLE)\r
124     {\r
125       /* Start timer by setting SC bit in Control register */\r
126       WDG->CR |= WDG_Counter_Start_Mask;\r
127     }\r
128     else \r
129     {\r
130       /* Stop timer by clearing SC bit in Control register */\r
131       WDG->CR &= WDG_Counter_Stop_Mask;\r
132     }\r
133   }\r
134   else\r
135   {\r
136     /* Watchdog mode */\r
137     if(NewState == ENABLE)\r
138     {\r
139       WDG->KR = WDG_KeyValue1_Mask;\r
140       WDG->KR = WDG_KeyValue2_Mask;\r
141     }\r
142   }\r
143 }\r
144 \r
145 /*******************************************************************************\r
146 * Function Name  : WDG_ITConfig\r
147 * Description    : Enables or disables the WDG End of Count(EC) interrupt.\r
148 * Input          : Newstate:  new state of the WDG End of Count(EC) interrupt.\r
149 *                  This parameter can be: ENABLE or DISABLE.\r
150 * Output         : None\r
151 * Return         : None\r
152 *******************************************************************************/\r
153 void WDG_ITConfig(FunctionalState NewState)\r
154 {\r
155   if(NewState == ENABLE)\r
156   {\r
157     /* Enable the End of Count interrupt */\r
158     WDG->MR |= WDG_IT_EC;\r
159   }\r
160   else\r
161   {\r
162     /* Disable the End of Count interrupt */\r
163     WDG->MR &= ~WDG_IT_EC;\r
164   }\r
165 }\r
166 \r
167 /*******************************************************************************\r
168 * Function Name  : WDG_GetCounter\r
169 * Description    : Gets the WDG\92s current counter value.\r
170 * Input          : None\r
171 * Output         : None\r
172 * Return         : The WDG current counter value\r
173 *******************************************************************************/\r
174 u16 WDG_GetCounter(void)\r
175 {\r
176    return WDG->CNT;\r
177 }\r
178 \r
179 /*******************************************************************************\r
180 * Function Name  : WDG_GetFlagStatus\r
181 * Description    : Checks whether the WDG End of Count(EC) flag is set or not.\r
182 * Input          : None\r
183 * Output         : None\r
184 * Return         : The new state of WDG End of Count(EC) flag (SET or RESET).\r
185 *******************************************************************************/\r
186 FlagStatus WDG_GetFlagStatus(void)\r
187 {\r
188   if((WDG->SR & WDG_FLAG_EC) != RESET )\r
189   {\r
190     return SET;\r
191   }\r
192   else\r
193   {\r
194     return RESET;\r
195   }\r
196 }\r
197 \r
198 /*******************************************************************************\r
199 * Function Name  : WDG_ClearFlag\r
200 * Description    : Clears the WDG\92s End of Count(EC) pending flag. \r
201 * Input          : None\r
202 * Output         : None\r
203 * Return         : None\r
204 *******************************************************************************/\r
205 void WDG_ClearFlag(void)\r
206 {\r
207   /* Clear the EC pending bit */\r
208   WDG->SR &= ~WDG_FLAG_EC;\r
209 }\r
210 \r
211 /*******************************************************************************\r
212 * Function Name  : WDG_GetITStatus\r
213 * Description    : Checks whether the WDG End of Count(EC) interrupt has \r
214 *                  occurred or not.\r
215 * Input          : None\r
216 * Output         : None\r
217 * Return         : The new state of WDG End of Count(EC) interrupt (SET or RESET).\r
218 *******************************************************************************/\r
219 ITStatus WDG_GetITStatus(void)\r
220 {\r
221   if(((WDG->SR & WDG_IT_EC) != RESET )&&((WDG->MR & WDG_IT_EC) != RESET ))\r
222   {\r
223     return SET;\r
224   }\r
225   else\r
226   {\r
227     return RESET;\r
228   }\r
229 }\r
230 \r
231 /*******************************************************************************\r
232 * Function Name  : WDG_ClearITPendingBit\r
233 * Description    : Clears the WDG's End of Count(EC) interrupt pending bit.\r
234 * Input          : None\r
235 * Output         : None\r
236 * Return         : None\r
237 *******************************************************************************/\r
238 void WDG_ClearITPendingBit(void)\r
239 {\r
240  /* Clear the EC pending bit */\r
241   WDG->SR &= ~WDG_IT_EC;\r
242 }\r
243 \r
244 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/\r