Initial commit

Dependencies:   FastPWM

Committer:
lypinator
Date:
Wed Sep 16 01:11:49 2020 +0000
Revision:
0:bb348c97df44
Added PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lypinator 0:bb348c97df44 1 /**
lypinator 0:bb348c97df44 2 ******************************************************************************
lypinator 0:bb348c97df44 3 * @file stm32f4xx_hal_wwdg.c
lypinator 0:bb348c97df44 4 * @author MCD Application Team
lypinator 0:bb348c97df44 5 * @brief WWDG HAL module driver.
lypinator 0:bb348c97df44 6 * This file provides firmware functions to manage the following
lypinator 0:bb348c97df44 7 * functionalities of the Window Watchdog (WWDG) peripheral:
lypinator 0:bb348c97df44 8 * + Initialization and de-initialization functions
lypinator 0:bb348c97df44 9 * + IO operation functions
lypinator 0:bb348c97df44 10 * + Peripheral State functions
lypinator 0:bb348c97df44 11 @verbatim
lypinator 0:bb348c97df44 12 ==============================================================================
lypinator 0:bb348c97df44 13 ##### WWDG specific features #####
lypinator 0:bb348c97df44 14 ==============================================================================
lypinator 0:bb348c97df44 15 [..]
lypinator 0:bb348c97df44 16 Once enabled the WWDG generates a system reset on expiry of a programmed
lypinator 0:bb348c97df44 17 time period, unless the program refreshes the counter (downcounter)
lypinator 0:bb348c97df44 18 before reaching 0x3F value (i.e. a reset is generated when the counter
lypinator 0:bb348c97df44 19 value rolls over from 0x40 to 0x3F).
lypinator 0:bb348c97df44 20
lypinator 0:bb348c97df44 21 (+) An MCU reset is also generated if the counter value is refreshed
lypinator 0:bb348c97df44 22 before the counter has reached the refresh window value. This
lypinator 0:bb348c97df44 23 implies that the counter must be refreshed in a limited window.
lypinator 0:bb348c97df44 24 (+) Once enabled the WWDG cannot be disabled except by a system reset.
lypinator 0:bb348c97df44 25 (+) WWDGRST flag in RCC_CSR register can be used to inform when a WWDG
lypinator 0:bb348c97df44 26 reset occurs.
lypinator 0:bb348c97df44 27 (+) The WWDG counter input clock is derived from the APB clock divided
lypinator 0:bb348c97df44 28 by a programmable prescaler.
lypinator 0:bb348c97df44 29 (+) WWDG clock (Hz) = PCLK1 / (4096 * Prescaler)
lypinator 0:bb348c97df44 30 (+) WWDG timeout (mS) = 1000 * Counter / WWDG clock
lypinator 0:bb348c97df44 31 (+) WWDG Counter refresh is allowed between the following limits :
lypinator 0:bb348c97df44 32 (++) min time (mS) = 1000 * (Counter _ Window) / WWDG clock
lypinator 0:bb348c97df44 33 (++) max time (mS) = 1000 * (Counter _ 0x40) / WWDG clock
lypinator 0:bb348c97df44 34
lypinator 0:bb348c97df44 35 (+) Min-max timeout value at 50 MHz(PCLK1): 81.9 us / 41.9 ms
lypinator 0:bb348c97df44 36
lypinator 0:bb348c97df44 37 (+) The Early Wakeup Interrupt (EWI) can be used if specific safety
lypinator 0:bb348c97df44 38 operations or data logging must be performed before the actual reset is
lypinator 0:bb348c97df44 39 generated. When the downcounter reaches the value 0x40, an EWI interrupt
lypinator 0:bb348c97df44 40 is generated and the corresponding interrupt service routine (ISR) can
lypinator 0:bb348c97df44 41 be used to trigger specific actions (such as communications or data
lypinator 0:bb348c97df44 42 logging), before resetting the device.
lypinator 0:bb348c97df44 43 In some applications, the EWI interrupt can be used to manage a software
lypinator 0:bb348c97df44 44 system check and/or system recovery/graceful degradation, without
lypinator 0:bb348c97df44 45 generating a WWDG reset. In this case, the corresponding interrupt
lypinator 0:bb348c97df44 46 service routine (ISR) should reload the WWDG counter to avoid the WWDG
lypinator 0:bb348c97df44 47 reset, then trigger the required actions.
lypinator 0:bb348c97df44 48 Note:When the EWI interrupt cannot be served, e.g. due to a system lock
lypinator 0:bb348c97df44 49 in a higher priority task, the WWDG reset will eventually be generated.
lypinator 0:bb348c97df44 50
lypinator 0:bb348c97df44 51 (+) Debug mode : When the microcontroller enters debug mode (core halted),
lypinator 0:bb348c97df44 52 the WWDG counter either continues to work normally or stops, depending
lypinator 0:bb348c97df44 53 on DBG_WWDG_STOP configuration bit in DBG module, accessible through
lypinator 0:bb348c97df44 54 __HAL_DBGMCU_FREEZE_WWDG() and __HAL_DBGMCU_UNFREEZE_WWDG() macros
lypinator 0:bb348c97df44 55
lypinator 0:bb348c97df44 56 ##### How to use this driver #####
lypinator 0:bb348c97df44 57 ==============================================================================
lypinator 0:bb348c97df44 58 [..]
lypinator 0:bb348c97df44 59 (+) Enable WWDG APB1 clock using __HAL_RCC_WWDG_CLK_ENABLE().
lypinator 0:bb348c97df44 60
lypinator 0:bb348c97df44 61 (+) Set the WWDG prescaler, refresh window, counter value and Early Wakeup
lypinator 0:bb348c97df44 62 Interrupt mode using using HAL_WWDG_Init() function.
lypinator 0:bb348c97df44 63 This enables WWDG peripheral and the downcounter starts downcounting
lypinator 0:bb348c97df44 64 from given counter value.
lypinator 0:bb348c97df44 65 Init function can be called again to modify all watchdog parameters,
lypinator 0:bb348c97df44 66 however if EWI mode has been set once, it can't be clear until next
lypinator 0:bb348c97df44 67 reset.
lypinator 0:bb348c97df44 68
lypinator 0:bb348c97df44 69 (+) The application program must refresh the WWDG counter at regular
lypinator 0:bb348c97df44 70 intervals during normal operation to prevent an MCU reset using
lypinator 0:bb348c97df44 71 HAL_WWDG_Refresh() function. This operation must occur only when
lypinator 0:bb348c97df44 72 the counter is lower than the window value already programmed.
lypinator 0:bb348c97df44 73
lypinator 0:bb348c97df44 74 (+) if Early Wakeup Interrupt mode is enable an interrupt is generated when
lypinator 0:bb348c97df44 75 the counter reaches 0x40. User can add his own code in weak function
lypinator 0:bb348c97df44 76 HAL_WWDG_EarlyWakeupCallback().
lypinator 0:bb348c97df44 77
lypinator 0:bb348c97df44 78 *** WWDG HAL driver macros list ***
lypinator 0:bb348c97df44 79 ==================================
lypinator 0:bb348c97df44 80 [..]
lypinator 0:bb348c97df44 81 Below the list of most used macros in WWDG HAL driver.
lypinator 0:bb348c97df44 82
lypinator 0:bb348c97df44 83 (+) __HAL_WWDG_GET_IT_SOURCE: Check the selected WWDG's interrupt source.
lypinator 0:bb348c97df44 84 (+) __HAL_WWDG_GET_FLAG: Get the selected WWDG's flag status.
lypinator 0:bb348c97df44 85 (+) __HAL_WWDG_CLEAR_FLAG: Clear the WWDG's pending flags.
lypinator 0:bb348c97df44 86
lypinator 0:bb348c97df44 87 @endverbatim
lypinator 0:bb348c97df44 88 ******************************************************************************
lypinator 0:bb348c97df44 89 * @attention
lypinator 0:bb348c97df44 90 *
lypinator 0:bb348c97df44 91 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
lypinator 0:bb348c97df44 92 *
lypinator 0:bb348c97df44 93 * Redistribution and use in source and binary forms, with or without modification,
lypinator 0:bb348c97df44 94 * are permitted provided that the following conditions are met:
lypinator 0:bb348c97df44 95 * 1. Redistributions of source code must retain the above copyright notice,
lypinator 0:bb348c97df44 96 * this list of conditions and the following disclaimer.
lypinator 0:bb348c97df44 97 * 2. Redistributions in binary form must reproduce the above copyright notice,
lypinator 0:bb348c97df44 98 * this list of conditions and the following disclaimer in the documentation
lypinator 0:bb348c97df44 99 * and/or other materials provided with the distribution.
lypinator 0:bb348c97df44 100 * 3. Neither the name of STMicroelectronics nor the names of its contributors
lypinator 0:bb348c97df44 101 * may be used to endorse or promote products derived from this software
lypinator 0:bb348c97df44 102 * without specific prior written permission.
lypinator 0:bb348c97df44 103 *
lypinator 0:bb348c97df44 104 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
lypinator 0:bb348c97df44 105 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
lypinator 0:bb348c97df44 106 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lypinator 0:bb348c97df44 107 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
lypinator 0:bb348c97df44 108 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
lypinator 0:bb348c97df44 109 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
lypinator 0:bb348c97df44 110 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lypinator 0:bb348c97df44 111 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
lypinator 0:bb348c97df44 112 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
lypinator 0:bb348c97df44 113 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lypinator 0:bb348c97df44 114 *
lypinator 0:bb348c97df44 115 ******************************************************************************
lypinator 0:bb348c97df44 116 */
lypinator 0:bb348c97df44 117
lypinator 0:bb348c97df44 118 /* Includes ------------------------------------------------------------------*/
lypinator 0:bb348c97df44 119 #include "stm32f4xx_hal.h"
lypinator 0:bb348c97df44 120
lypinator 0:bb348c97df44 121 /** @addtogroup STM32F4xx_HAL_Driver
lypinator 0:bb348c97df44 122 * @{
lypinator 0:bb348c97df44 123 */
lypinator 0:bb348c97df44 124
lypinator 0:bb348c97df44 125 #ifdef HAL_WWDG_MODULE_ENABLED
lypinator 0:bb348c97df44 126 /** @defgroup WWDG WWDG
lypinator 0:bb348c97df44 127 * @brief WWDG HAL module driver.
lypinator 0:bb348c97df44 128 * @{
lypinator 0:bb348c97df44 129 */
lypinator 0:bb348c97df44 130
lypinator 0:bb348c97df44 131 /* Private typedef -----------------------------------------------------------*/
lypinator 0:bb348c97df44 132 /* Private define ------------------------------------------------------------*/
lypinator 0:bb348c97df44 133 /* Private macro -------------------------------------------------------------*/
lypinator 0:bb348c97df44 134 /* Private variables ---------------------------------------------------------*/
lypinator 0:bb348c97df44 135 /* Private function prototypes -----------------------------------------------*/
lypinator 0:bb348c97df44 136 /* Exported functions --------------------------------------------------------*/
lypinator 0:bb348c97df44 137
lypinator 0:bb348c97df44 138 /** @defgroup WWDG_Exported_Functions WWDG Exported Functions
lypinator 0:bb348c97df44 139 * @{
lypinator 0:bb348c97df44 140 */
lypinator 0:bb348c97df44 141
lypinator 0:bb348c97df44 142 /** @defgroup WWDG_Exported_Functions_Group1 Initialization and Configuration functions
lypinator 0:bb348c97df44 143 * @brief Initialization and Configuration functions.
lypinator 0:bb348c97df44 144 *
lypinator 0:bb348c97df44 145 @verbatim
lypinator 0:bb348c97df44 146 ==============================================================================
lypinator 0:bb348c97df44 147 ##### Initialization and Configuration functions #####
lypinator 0:bb348c97df44 148 ==============================================================================
lypinator 0:bb348c97df44 149 [..]
lypinator 0:bb348c97df44 150 This section provides functions allowing to:
lypinator 0:bb348c97df44 151 (+) Initialize and start the WWDG according to the specified parameters
lypinator 0:bb348c97df44 152 in the WWDG_InitTypeDef of associated handle.
lypinator 0:bb348c97df44 153 (+) Initialize the WWDG MSP.
lypinator 0:bb348c97df44 154
lypinator 0:bb348c97df44 155 @endverbatim
lypinator 0:bb348c97df44 156 * @{
lypinator 0:bb348c97df44 157 */
lypinator 0:bb348c97df44 158
lypinator 0:bb348c97df44 159 /**
lypinator 0:bb348c97df44 160 * @brief Initialize the WWDG according to the specified.
lypinator 0:bb348c97df44 161 * parameters in the WWDG_InitTypeDef of associated handle.
lypinator 0:bb348c97df44 162 * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains
lypinator 0:bb348c97df44 163 * the configuration information for the specified WWDG module.
lypinator 0:bb348c97df44 164 * @retval HAL status
lypinator 0:bb348c97df44 165 */
lypinator 0:bb348c97df44 166 HAL_StatusTypeDef HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg)
lypinator 0:bb348c97df44 167 {
lypinator 0:bb348c97df44 168 /* Check the WWDG handle allocation */
lypinator 0:bb348c97df44 169 if(hwwdg == NULL)
lypinator 0:bb348c97df44 170 {
lypinator 0:bb348c97df44 171 return HAL_ERROR;
lypinator 0:bb348c97df44 172 }
lypinator 0:bb348c97df44 173
lypinator 0:bb348c97df44 174 /* Check the parameters */
lypinator 0:bb348c97df44 175 assert_param(IS_WWDG_ALL_INSTANCE(hwwdg->Instance));
lypinator 0:bb348c97df44 176 assert_param(IS_WWDG_PRESCALER(hwwdg->Init.Prescaler));
lypinator 0:bb348c97df44 177 assert_param(IS_WWDG_WINDOW(hwwdg->Init.Window));
lypinator 0:bb348c97df44 178 assert_param(IS_WWDG_COUNTER(hwwdg->Init.Counter));
lypinator 0:bb348c97df44 179 assert_param(IS_WWDG_EWI_MODE(hwwdg->Init.EWIMode));
lypinator 0:bb348c97df44 180
lypinator 0:bb348c97df44 181 /* Init the low level hardware */
lypinator 0:bb348c97df44 182 HAL_WWDG_MspInit(hwwdg);
lypinator 0:bb348c97df44 183
lypinator 0:bb348c97df44 184 /* Set WWDG Counter */
lypinator 0:bb348c97df44 185 WRITE_REG(hwwdg->Instance->CR, (WWDG_CR_WDGA | hwwdg->Init.Counter));
lypinator 0:bb348c97df44 186
lypinator 0:bb348c97df44 187 /* Set WWDG Prescaler and Window */
lypinator 0:bb348c97df44 188 WRITE_REG(hwwdg->Instance->CFR, (hwwdg->Init.EWIMode | hwwdg->Init.Prescaler | hwwdg->Init.Window));
lypinator 0:bb348c97df44 189
lypinator 0:bb348c97df44 190 /* Return function status */
lypinator 0:bb348c97df44 191 return HAL_OK;
lypinator 0:bb348c97df44 192 }
lypinator 0:bb348c97df44 193
lypinator 0:bb348c97df44 194 /**
lypinator 0:bb348c97df44 195 * @brief Initialize the WWDG MSP.
lypinator 0:bb348c97df44 196 * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains
lypinator 0:bb348c97df44 197 * the configuration information for the specified WWDG module.
lypinator 0:bb348c97df44 198 * @note When rewriting this function in user file, mechanism may be added
lypinator 0:bb348c97df44 199 * to avoid multiple initialize when HAL_WWDG_Init function is called
lypinator 0:bb348c97df44 200 * again to change parameters.
lypinator 0:bb348c97df44 201 * @retval None
lypinator 0:bb348c97df44 202 */
lypinator 0:bb348c97df44 203 __weak void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
lypinator 0:bb348c97df44 204 {
lypinator 0:bb348c97df44 205 /* Prevent unused argument(s) compilation warning */
lypinator 0:bb348c97df44 206 UNUSED(hwwdg);
lypinator 0:bb348c97df44 207
lypinator 0:bb348c97df44 208 /* NOTE: This function should not be modified, when the callback is needed,
lypinator 0:bb348c97df44 209 the HAL_WWDG_MspInit could be implemented in the user file
lypinator 0:bb348c97df44 210 */
lypinator 0:bb348c97df44 211 }
lypinator 0:bb348c97df44 212
lypinator 0:bb348c97df44 213 /**
lypinator 0:bb348c97df44 214 * @}
lypinator 0:bb348c97df44 215 */
lypinator 0:bb348c97df44 216
lypinator 0:bb348c97df44 217 /** @defgroup WWDG_Exported_Functions_Group2 IO operation functions
lypinator 0:bb348c97df44 218 * @brief IO operation functions
lypinator 0:bb348c97df44 219 *
lypinator 0:bb348c97df44 220 @verbatim
lypinator 0:bb348c97df44 221 ==============================================================================
lypinator 0:bb348c97df44 222 ##### IO operation functions #####
lypinator 0:bb348c97df44 223 ==============================================================================
lypinator 0:bb348c97df44 224 [..]
lypinator 0:bb348c97df44 225 This section provides functions allowing to:
lypinator 0:bb348c97df44 226 (+) Refresh the WWDG.
lypinator 0:bb348c97df44 227 (+) Handle WWDG interrupt request and associated function callback.
lypinator 0:bb348c97df44 228
lypinator 0:bb348c97df44 229 @endverbatim
lypinator 0:bb348c97df44 230 * @{
lypinator 0:bb348c97df44 231 */
lypinator 0:bb348c97df44 232
lypinator 0:bb348c97df44 233 /**
lypinator 0:bb348c97df44 234 * @brief Refresh the WWDG.
lypinator 0:bb348c97df44 235 * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains
lypinator 0:bb348c97df44 236 * the configuration information for the specified WWDG module.
lypinator 0:bb348c97df44 237 * @retval HAL status
lypinator 0:bb348c97df44 238 */
lypinator 0:bb348c97df44 239 HAL_StatusTypeDef HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg)
lypinator 0:bb348c97df44 240 {
lypinator 0:bb348c97df44 241 /* Write to WWDG CR the WWDG Counter value to refresh with */
lypinator 0:bb348c97df44 242 WRITE_REG(hwwdg->Instance->CR, (hwwdg->Init.Counter));
lypinator 0:bb348c97df44 243
lypinator 0:bb348c97df44 244 /* Return function status */
lypinator 0:bb348c97df44 245 return HAL_OK;
lypinator 0:bb348c97df44 246 }
lypinator 0:bb348c97df44 247
lypinator 0:bb348c97df44 248 /**
lypinator 0:bb348c97df44 249 * @brief Handle WWDG interrupt request.
lypinator 0:bb348c97df44 250 * @note The Early Wakeup Interrupt (EWI) can be used if specific safety operations
lypinator 0:bb348c97df44 251 * or data logging must be performed before the actual reset is generated.
lypinator 0:bb348c97df44 252 * The EWI interrupt is enabled by calling HAL_WWDG_Init function with
lypinator 0:bb348c97df44 253 * EWIMode set to WWDG_EWI_ENABLE.
lypinator 0:bb348c97df44 254 * When the downcounter reaches the value 0x40, and EWI interrupt is
lypinator 0:bb348c97df44 255 * generated and the corresponding Interrupt Service Routine (ISR) can
lypinator 0:bb348c97df44 256 * be used to trigger specific actions (such as communications or data
lypinator 0:bb348c97df44 257 * logging), before resetting the device.
lypinator 0:bb348c97df44 258 * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains
lypinator 0:bb348c97df44 259 * the configuration information for the specified WWDG module.
lypinator 0:bb348c97df44 260 * @retval None
lypinator 0:bb348c97df44 261 */
lypinator 0:bb348c97df44 262 void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg)
lypinator 0:bb348c97df44 263 {
lypinator 0:bb348c97df44 264 /* Check if Early Wakeup Interrupt is enable */
lypinator 0:bb348c97df44 265 if(__HAL_WWDG_GET_IT_SOURCE(hwwdg, WWDG_IT_EWI) != RESET)
lypinator 0:bb348c97df44 266 {
lypinator 0:bb348c97df44 267 /* Check if WWDG Early Wakeup Interrupt occurred */
lypinator 0:bb348c97df44 268 if(__HAL_WWDG_GET_FLAG(hwwdg, WWDG_FLAG_EWIF) != RESET)
lypinator 0:bb348c97df44 269 {
lypinator 0:bb348c97df44 270 /* Clear the WWDG Early Wakeup flag */
lypinator 0:bb348c97df44 271 __HAL_WWDG_CLEAR_FLAG(hwwdg, WWDG_FLAG_EWIF);
lypinator 0:bb348c97df44 272
lypinator 0:bb348c97df44 273 /* Early Wakeup callback */
lypinator 0:bb348c97df44 274 HAL_WWDG_EarlyWakeupCallback(hwwdg);
lypinator 0:bb348c97df44 275 }
lypinator 0:bb348c97df44 276 }
lypinator 0:bb348c97df44 277 }
lypinator 0:bb348c97df44 278
lypinator 0:bb348c97df44 279 /**
lypinator 0:bb348c97df44 280 * @brief WWDG Early Wakeup callback.
lypinator 0:bb348c97df44 281 * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains
lypinator 0:bb348c97df44 282 * the configuration information for the specified WWDG module.
lypinator 0:bb348c97df44 283 * @retval None
lypinator 0:bb348c97df44 284 */
lypinator 0:bb348c97df44 285 __weak void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef* hwwdg)
lypinator 0:bb348c97df44 286 {
lypinator 0:bb348c97df44 287 /* Prevent unused argument(s) compilation warning */
lypinator 0:bb348c97df44 288 UNUSED(hwwdg);
lypinator 0:bb348c97df44 289
lypinator 0:bb348c97df44 290 /* NOTE: This function should not be modified, when the callback is needed,
lypinator 0:bb348c97df44 291 the HAL_WWDG_EarlyWakeupCallback could be implemented in the user file
lypinator 0:bb348c97df44 292 */
lypinator 0:bb348c97df44 293 }
lypinator 0:bb348c97df44 294
lypinator 0:bb348c97df44 295 /**
lypinator 0:bb348c97df44 296 * @}
lypinator 0:bb348c97df44 297 */
lypinator 0:bb348c97df44 298
lypinator 0:bb348c97df44 299 /**
lypinator 0:bb348c97df44 300 * @}
lypinator 0:bb348c97df44 301 */
lypinator 0:bb348c97df44 302
lypinator 0:bb348c97df44 303 #endif /* HAL_WWDG_MODULE_ENABLED */
lypinator 0:bb348c97df44 304 /**
lypinator 0:bb348c97df44 305 * @}
lypinator 0:bb348c97df44 306 */
lypinator 0:bb348c97df44 307
lypinator 0:bb348c97df44 308 /**
lypinator 0:bb348c97df44 309 * @}
lypinator 0:bb348c97df44 310 */
lypinator 0:bb348c97df44 311
lypinator 0:bb348c97df44 312 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/