Subversion Repositories dashGPS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_ll_iwdg.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of IWDG LL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.</center></h2>
11
  *
12
  * This software component is licensed by ST under BSD 3-Clause license,
13
  * the "License"; You may not use this file except in compliance with the
14
  * License. You may obtain a copy of the License at:
15
  *                        opensource.org/licenses/BSD-3-Clause
16
  *
17
  ******************************************************************************
18
  */
19
 
20
/* Define to prevent recursive inclusion -------------------------------------*/
21
#ifndef STM32F1xx_LL_IWDG_H
22
#define STM32F1xx_LL_IWDG_H
23
 
24
#ifdef __cplusplus
25
extern "C" {
26
#endif
27
 
28
/* Includes ------------------------------------------------------------------*/
29
#include "stm32f1xx.h"
30
 
31
/** @addtogroup STM32F1xx_LL_Driver
32
  * @{
33
  */
34
 
35
#if defined(IWDG)
36
 
37
/** @defgroup IWDG_LL IWDG
38
  * @{
39
  */
40
 
41
/* Private types -------------------------------------------------------------*/
42
/* Private variables ---------------------------------------------------------*/
43
 
44
/* Private constants ---------------------------------------------------------*/
45
/** @defgroup IWDG_LL_Private_Constants IWDG Private Constants
46
  * @{
47
  */
48
 
49
#define LL_IWDG_KEY_RELOAD                 0x0000AAAAU               /*!< IWDG Reload Counter Enable   */
50
#define LL_IWDG_KEY_ENABLE                 0x0000CCCCU               /*!< IWDG Peripheral Enable       */
51
#define LL_IWDG_KEY_WR_ACCESS_ENABLE       0x00005555U               /*!< IWDG KR Write Access Enable  */
52
#define LL_IWDG_KEY_WR_ACCESS_DISABLE      0x00000000U               /*!< IWDG KR Write Access Disable */
53
 
54
/**
55
  * @}
56
  */
57
 
58
/* Private macros ------------------------------------------------------------*/
59
 
60
/* Exported types ------------------------------------------------------------*/
61
/* Exported constants --------------------------------------------------------*/
62
/** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants
63
  * @{
64
  */
65
 
66
/** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines
67
  * @brief    Flags defines which can be used with LL_IWDG_ReadReg function
68
  * @{
69
  */
70
#define LL_IWDG_SR_PVU                     IWDG_SR_PVU                           /*!< Watchdog prescaler value update */
71
#define LL_IWDG_SR_RVU                     IWDG_SR_RVU                           /*!< Watchdog counter reload value update */
72
 
73
/**
74
  * @}
75
  */
76
 
77
/** @defgroup IWDG_LL_EC_PRESCALER  Prescaler Divider
78
  * @{
79
  */
80
#define LL_IWDG_PRESCALER_4                0x00000000U                           /*!< Divider by 4   */
81
#define LL_IWDG_PRESCALER_8                (IWDG_PR_PR_0)                        /*!< Divider by 8   */
82
#define LL_IWDG_PRESCALER_16               (IWDG_PR_PR_1)                        /*!< Divider by 16  */
83
#define LL_IWDG_PRESCALER_32               (IWDG_PR_PR_1 | IWDG_PR_PR_0)         /*!< Divider by 32  */
84
#define LL_IWDG_PRESCALER_64               (IWDG_PR_PR_2)                        /*!< Divider by 64  */
85
#define LL_IWDG_PRESCALER_128              (IWDG_PR_PR_2 | IWDG_PR_PR_0)         /*!< Divider by 128 */
86
#define LL_IWDG_PRESCALER_256              (IWDG_PR_PR_2 | IWDG_PR_PR_1)         /*!< Divider by 256 */
87
/**
88
  * @}
89
  */
90
 
91
/**
92
  * @}
93
  */
94
 
95
/* Exported macro ------------------------------------------------------------*/
96
/** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros
97
  * @{
98
  */
99
 
100
/** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros
101
  * @{
102
  */
103
 
104
/**
105
  * @brief  Write a value in IWDG register
106
  * @param  __INSTANCE__ IWDG Instance
107
  * @param  __REG__ Register to be written
108
  * @param  __VALUE__ Value to be written in the register
109
  * @retval None
110
  */
111
#define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
112
 
113
/**
114
  * @brief  Read a value in IWDG register
115
  * @param  __INSTANCE__ IWDG Instance
116
  * @param  __REG__ Register to be read
117
  * @retval Register value
118
  */
119
#define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
120
/**
121
  * @}
122
  */
123
 
124
/**
125
  * @}
126
  */
127
 
128
 
129
/* Exported functions --------------------------------------------------------*/
130
/** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions
131
  * @{
132
  */
133
/** @defgroup IWDG_LL_EF_Configuration Configuration
134
  * @{
135
  */
136
 
137
/**
138
  * @brief  Start the Independent Watchdog
139
  * @note   Except if the hardware watchdog option is selected
140
  * @rmtoll KR           KEY           LL_IWDG_Enable
141
  * @param  IWDGx IWDG Instance
142
  * @retval None
143
  */
144
__STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx)
145
{
146
  WRITE_REG(IWDG->KR, LL_IWDG_KEY_ENABLE);
147
}
148
 
149
/**
150
  * @brief  Reloads IWDG counter with value defined in the reload register
151
  * @rmtoll KR           KEY           LL_IWDG_ReloadCounter
152
  * @param  IWDGx IWDG Instance
153
  * @retval None
154
  */
155
__STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx)
156
{
157
  WRITE_REG(IWDG->KR, LL_IWDG_KEY_RELOAD);
158
}
159
 
160
/**
161
  * @brief  Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers
162
  * @rmtoll KR           KEY           LL_IWDG_EnableWriteAccess
163
  * @param  IWDGx IWDG Instance
164
  * @retval None
165
  */
166
__STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx)
167
{
168
  WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE);
169
}
170
 
171
/**
172
  * @brief  Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers
173
  * @rmtoll KR           KEY           LL_IWDG_DisableWriteAccess
174
  * @param  IWDGx IWDG Instance
175
  * @retval None
176
  */
177
__STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx)
178
{
179
  WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE);
180
}
181
 
182
/**
183
  * @brief  Select the prescaler of the IWDG
184
  * @rmtoll PR           PR            LL_IWDG_SetPrescaler
185
  * @param  IWDGx IWDG Instance
186
  * @param  Prescaler This parameter can be one of the following values:
187
  *         @arg @ref LL_IWDG_PRESCALER_4
188
  *         @arg @ref LL_IWDG_PRESCALER_8
189
  *         @arg @ref LL_IWDG_PRESCALER_16
190
  *         @arg @ref LL_IWDG_PRESCALER_32
191
  *         @arg @ref LL_IWDG_PRESCALER_64
192
  *         @arg @ref LL_IWDG_PRESCALER_128
193
  *         @arg @ref LL_IWDG_PRESCALER_256
194
  * @retval None
195
  */
196
__STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler)
197
{
198
  WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler);
199
}
200
 
201
/**
202
  * @brief  Get the selected prescaler of the IWDG
203
  * @rmtoll PR           PR            LL_IWDG_GetPrescaler
204
  * @param  IWDGx IWDG Instance
205
  * @retval Returned value can be one of the following values:
206
  *         @arg @ref LL_IWDG_PRESCALER_4
207
  *         @arg @ref LL_IWDG_PRESCALER_8
208
  *         @arg @ref LL_IWDG_PRESCALER_16
209
  *         @arg @ref LL_IWDG_PRESCALER_32
210
  *         @arg @ref LL_IWDG_PRESCALER_64
211
  *         @arg @ref LL_IWDG_PRESCALER_128
212
  *         @arg @ref LL_IWDG_PRESCALER_256
213
  */
214
__STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx)
215
{
216
  return (uint32_t)(READ_REG(IWDGx->PR));
217
}
218
 
219
/**
220
  * @brief  Specify the IWDG down-counter reload value
221
  * @rmtoll RLR          RL            LL_IWDG_SetReloadCounter
222
  * @param  IWDGx IWDG Instance
223
  * @param  Counter Value between Min_Data=0 and Max_Data=0x0FFF
224
  * @retval None
225
  */
226
__STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter)
227
{
228
  WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter);
229
}
230
 
231
/**
232
  * @brief  Get the specified IWDG down-counter reload value
233
  * @rmtoll RLR          RL            LL_IWDG_GetReloadCounter
234
  * @param  IWDGx IWDG Instance
235
  * @retval Value between Min_Data=0 and Max_Data=0x0FFF
236
  */
237
__STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx)
238
{
239
  return (uint32_t)(READ_REG(IWDGx->RLR));
240
}
241
 
242
 
243
/**
244
  * @}
245
  */
246
 
247
/** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management
248
  * @{
249
  */
250
 
251
/**
252
  * @brief  Check if flag Prescaler Value Update is set or not
253
  * @rmtoll SR           PVU           LL_IWDG_IsActiveFlag_PVU
254
  * @param  IWDGx IWDG Instance
255
  * @retval State of bit (1 or 0).
256
  */
257
__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx)
258
{
259
  return (READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU));
260
}
261
 
262
/**
263
  * @brief  Check if flag Reload Value Update is set or not
264
  * @rmtoll SR           RVU           LL_IWDG_IsActiveFlag_RVU
265
  * @param  IWDGx IWDG Instance
266
  * @retval State of bit (1 or 0).
267
  */
268
__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx)
269
{
270
  return (READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU));
271
}
272
 
273
 
274
/**
275
  * @brief  Check if all flags Prescaler, Reload & Window Value Update are reset or not
276
  * @rmtoll SR           PVU           LL_IWDG_IsReady\n
277
  *         SR           RVU           LL_IWDG_IsReady
278
  * @param  IWDGx IWDG Instance
279
  * @retval State of bits (1 or 0).
280
  */
281
__STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx)
282
{
283
  return (READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU) == 0U);
284
}
285
 
286
/**
287
  * @}
288
  */
289
 
290
 
291
/**
292
  * @}
293
  */
294
 
295
/**
296
  * @}
297
  */
298
 
299
#endif /* IWDG) */
300
 
301
/**
302
  * @}
303
  */
304
 
305
#ifdef __cplusplus
306
}
307
#endif
308
 
309
#endif /* STM32F1xx_LL_IWDG_H */
310
 
311
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/