Milen Pavlov / XRange_mbed_src

Dependents:   XRangePingPong XRange-LoRaWAN-lmic-app lora-transceiver

Committer:
dudmuck
Date:
Thu Jan 15 02:25:19 2015 +0000
Revision:
335:b4678b054027
updated to rev443 of official mbed-src

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudmuck 335:b4678b054027 1 /**
dudmuck 335:b4678b054027 2 ******************************************************************************
dudmuck 335:b4678b054027 3 * @file stm32l1xx_hal.c
dudmuck 335:b4678b054027 4 * @author MCD Application Team
dudmuck 335:b4678b054027 5 * @version V1.0.0
dudmuck 335:b4678b054027 6 * @date 5-September-2014
dudmuck 335:b4678b054027 7 * @brief HAL module driver.
dudmuck 335:b4678b054027 8 * This is the common part of the HAL initialization
dudmuck 335:b4678b054027 9 *
dudmuck 335:b4678b054027 10 @verbatim
dudmuck 335:b4678b054027 11 ==============================================================================
dudmuck 335:b4678b054027 12 ##### How to use this driver #####
dudmuck 335:b4678b054027 13 ==============================================================================
dudmuck 335:b4678b054027 14 [..]
dudmuck 335:b4678b054027 15 The common HAL driver contains a set of generic and common APIs that can be
dudmuck 335:b4678b054027 16 used by the PPP peripheral drivers and the user to start using the HAL.
dudmuck 335:b4678b054027 17 [..]
dudmuck 335:b4678b054027 18 The HAL contains two APIs' categories:
dudmuck 335:b4678b054027 19 (+) Common HAL APIs
dudmuck 335:b4678b054027 20 (+) Services HAL APIs
dudmuck 335:b4678b054027 21
dudmuck 335:b4678b054027 22 @endverbatim
dudmuck 335:b4678b054027 23 ******************************************************************************
dudmuck 335:b4678b054027 24 * @attention
dudmuck 335:b4678b054027 25 *
dudmuck 335:b4678b054027 26 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
dudmuck 335:b4678b054027 27 *
dudmuck 335:b4678b054027 28 * Redistribution and use in source and binary forms, with or without modification,
dudmuck 335:b4678b054027 29 * are permitted provided that the following conditions are met:
dudmuck 335:b4678b054027 30 * 1. Redistributions of source code must retain the above copyright notice,
dudmuck 335:b4678b054027 31 * this list of conditions and the following disclaimer.
dudmuck 335:b4678b054027 32 * 2. Redistributions in binary form must reproduce the above copyright notice,
dudmuck 335:b4678b054027 33 * this list of conditions and the following disclaimer in the documentation
dudmuck 335:b4678b054027 34 * and/or other materials provided with the distribution.
dudmuck 335:b4678b054027 35 * 3. Neither the name of STMicroelectronics nor the names of its contributors
dudmuck 335:b4678b054027 36 * may be used to endorse or promote products derived from this software
dudmuck 335:b4678b054027 37 * without specific prior written permission.
dudmuck 335:b4678b054027 38 *
dudmuck 335:b4678b054027 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
dudmuck 335:b4678b054027 40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
dudmuck 335:b4678b054027 41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dudmuck 335:b4678b054027 42 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
dudmuck 335:b4678b054027 43 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
dudmuck 335:b4678b054027 44 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
dudmuck 335:b4678b054027 45 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
dudmuck 335:b4678b054027 46 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
dudmuck 335:b4678b054027 47 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dudmuck 335:b4678b054027 48 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dudmuck 335:b4678b054027 49 *
dudmuck 335:b4678b054027 50 ******************************************************************************
dudmuck 335:b4678b054027 51 */
dudmuck 335:b4678b054027 52
dudmuck 335:b4678b054027 53 /* Includes ------------------------------------------------------------------*/
dudmuck 335:b4678b054027 54 #include "stm32l1xx_hal.h"
dudmuck 335:b4678b054027 55
dudmuck 335:b4678b054027 56 /** @addtogroup STM32L1xx_HAL_Driver
dudmuck 335:b4678b054027 57 * @{
dudmuck 335:b4678b054027 58 */
dudmuck 335:b4678b054027 59
dudmuck 335:b4678b054027 60 /** @defgroup HAL HAL
dudmuck 335:b4678b054027 61 * @brief HAL module driver.
dudmuck 335:b4678b054027 62 * @{
dudmuck 335:b4678b054027 63 */
dudmuck 335:b4678b054027 64
dudmuck 335:b4678b054027 65 #ifdef HAL_MODULE_ENABLED
dudmuck 335:b4678b054027 66
dudmuck 335:b4678b054027 67 /* Private typedef -----------------------------------------------------------*/
dudmuck 335:b4678b054027 68 /* Private define ------------------------------------------------------------*/
dudmuck 335:b4678b054027 69
dudmuck 335:b4678b054027 70 /** @defgroup HAL_Private_Defines HAL Private Defines
dudmuck 335:b4678b054027 71 * @{
dudmuck 335:b4678b054027 72 */
dudmuck 335:b4678b054027 73
dudmuck 335:b4678b054027 74 /**
dudmuck 335:b4678b054027 75 * @brief STM32L1xx HAL Driver version number V1.0.0
dudmuck 335:b4678b054027 76 */
dudmuck 335:b4678b054027 77 #define __STM32L1xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
dudmuck 335:b4678b054027 78 #define __STM32L1xx_HAL_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
dudmuck 335:b4678b054027 79 #define __STM32L1xx_HAL_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
dudmuck 335:b4678b054027 80 #define __STM32L1xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
dudmuck 335:b4678b054027 81 #define __STM32L1xx_HAL_VERSION ((__STM32L1xx_HAL_VERSION_MAIN << 24)\
dudmuck 335:b4678b054027 82 |(__STM32L1xx_HAL_VERSION_SUB1 << 16)\
dudmuck 335:b4678b054027 83 |(__STM32L1xx_HAL_VERSION_SUB2 << 8 )\
dudmuck 335:b4678b054027 84 |(__STM32L1xx_HAL_VERSION_RC))
dudmuck 335:b4678b054027 85
dudmuck 335:b4678b054027 86 #define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF)
dudmuck 335:b4678b054027 87
dudmuck 335:b4678b054027 88 /**
dudmuck 335:b4678b054027 89 * @}
dudmuck 335:b4678b054027 90 */
dudmuck 335:b4678b054027 91
dudmuck 335:b4678b054027 92 /* Private macro -------------------------------------------------------------*/
dudmuck 335:b4678b054027 93 /* Private variables ---------------------------------------------------------*/
dudmuck 335:b4678b054027 94
dudmuck 335:b4678b054027 95 /** @defgroup HAL_Private_Variables HAL Private Variables
dudmuck 335:b4678b054027 96 * @{
dudmuck 335:b4678b054027 97 */
dudmuck 335:b4678b054027 98
dudmuck 335:b4678b054027 99 static __IO uint32_t uwTick;
dudmuck 335:b4678b054027 100
dudmuck 335:b4678b054027 101 /**
dudmuck 335:b4678b054027 102 * @}
dudmuck 335:b4678b054027 103 */
dudmuck 335:b4678b054027 104
dudmuck 335:b4678b054027 105 /* Private function prototypes -----------------------------------------------*/
dudmuck 335:b4678b054027 106 /* Private functions ---------------------------------------------------------*/
dudmuck 335:b4678b054027 107
dudmuck 335:b4678b054027 108 /** @defgroup HAL_Exported_Functions HAL Exported Functions
dudmuck 335:b4678b054027 109 * @{
dudmuck 335:b4678b054027 110 */
dudmuck 335:b4678b054027 111
dudmuck 335:b4678b054027 112 /** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions
dudmuck 335:b4678b054027 113 * @brief Initialization and de-initialization functions
dudmuck 335:b4678b054027 114 *
dudmuck 335:b4678b054027 115 @verbatim
dudmuck 335:b4678b054027 116 ===============================================================================
dudmuck 335:b4678b054027 117 ##### Initialization and de-initialization functions #####
dudmuck 335:b4678b054027 118 ===============================================================================
dudmuck 335:b4678b054027 119 [..] This section provides functions allowing to:
dudmuck 335:b4678b054027 120 (+) Initializes the Flash interface, the NVIC allocation and initial clock
dudmuck 335:b4678b054027 121 configuration. It initializes the source of time base also when timeout
dudmuck 335:b4678b054027 122 is needed and the backup domain when enabled.
dudmuck 335:b4678b054027 123 (+) de-Initializes common part of the HAL.
dudmuck 335:b4678b054027 124 (+) Configure The time base source to have 1ms time base with a dedicated
dudmuck 335:b4678b054027 125 Tick interrupt priority.
dudmuck 335:b4678b054027 126 (++) Systick timer is used by default as source of time base, but user
dudmuck 335:b4678b054027 127 can eventually implement his proper time base source (a general purpose
dudmuck 335:b4678b054027 128 timer for example or other time source), keeping in mind that Time base
dudmuck 335:b4678b054027 129 duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
dudmuck 335:b4678b054027 130 handled in milliseconds basis.
dudmuck 335:b4678b054027 131 (++) Time base configuration function (HAL_InitTick ()) is called automatically
dudmuck 335:b4678b054027 132 at the beginning of the program after reset by HAL_Init() or at any time
dudmuck 335:b4678b054027 133 when clock is configured, by HAL_RCC_ClockConfig().
dudmuck 335:b4678b054027 134 (++) Source of time base is configured to generate interrupts at regular
dudmuck 335:b4678b054027 135 time intervals. Care must be taken if HAL_Delay() is called from a
dudmuck 335:b4678b054027 136 peripheral ISR process, the Tick interrupt line must have higher priority
dudmuck 335:b4678b054027 137 (numerically lower) than the peripheral interrupt. Otherwise the caller
dudmuck 335:b4678b054027 138 ISR process will be blocked.
dudmuck 335:b4678b054027 139 (++) functions affecting time base configurations are declared as __Weak
dudmuck 335:b4678b054027 140 to make override possible in case of other implementations in user file.
dudmuck 335:b4678b054027 141
dudmuck 335:b4678b054027 142 @endverbatim
dudmuck 335:b4678b054027 143 * @{
dudmuck 335:b4678b054027 144 */
dudmuck 335:b4678b054027 145
dudmuck 335:b4678b054027 146 /**
dudmuck 335:b4678b054027 147 * @brief This function configures the Flash prefetch,
dudmuck 335:b4678b054027 148 * Configures time base source, NVIC and Low level hardware
dudmuck 335:b4678b054027 149 * @note This function is called at the beginning of program after reset and before
dudmuck 335:b4678b054027 150 * the clock configuration
dudmuck 335:b4678b054027 151 * @note The time base configuration is based on MSI clock when exiting from Reset.
dudmuck 335:b4678b054027 152 * Once done, time base tick start incrementing.
dudmuck 335:b4678b054027 153 * In the default implementation,Systick is used as source of time base.
dudmuck 335:b4678b054027 154 * the tick variable is incremented each 1ms in its ISR.
dudmuck 335:b4678b054027 155 * @retval HAL status
dudmuck 335:b4678b054027 156 */
dudmuck 335:b4678b054027 157 HAL_StatusTypeDef HAL_Init(void)
dudmuck 335:b4678b054027 158 {
dudmuck 335:b4678b054027 159 /* Configure Flash prefetch */
dudmuck 335:b4678b054027 160 #if (PREFETCH_ENABLE != 0)
dudmuck 335:b4678b054027 161 __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
dudmuck 335:b4678b054027 162 #endif /* PREFETCH_ENABLE */
dudmuck 335:b4678b054027 163
dudmuck 335:b4678b054027 164 /* Set Interrupt Group Priority */
dudmuck 335:b4678b054027 165 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
dudmuck 335:b4678b054027 166
dudmuck 335:b4678b054027 167 /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */
dudmuck 335:b4678b054027 168 HAL_InitTick(TICK_INT_PRIORITY);
dudmuck 335:b4678b054027 169
dudmuck 335:b4678b054027 170 /* Init the low level hardware */
dudmuck 335:b4678b054027 171 HAL_MspInit();
dudmuck 335:b4678b054027 172
dudmuck 335:b4678b054027 173 /* Return function status */
dudmuck 335:b4678b054027 174 return HAL_OK;
dudmuck 335:b4678b054027 175 }
dudmuck 335:b4678b054027 176
dudmuck 335:b4678b054027 177 /**
dudmuck 335:b4678b054027 178 * @brief This function de-Initializes common part of the HAL and stops the source
dudmuck 335:b4678b054027 179 * of time base.
dudmuck 335:b4678b054027 180 * @note This function is optional.
dudmuck 335:b4678b054027 181 * @retval HAL status
dudmuck 335:b4678b054027 182 */
dudmuck 335:b4678b054027 183 HAL_StatusTypeDef HAL_DeInit(void)
dudmuck 335:b4678b054027 184 {
dudmuck 335:b4678b054027 185 /* Reset of all peripherals */
dudmuck 335:b4678b054027 186 __APB1_FORCE_RESET();
dudmuck 335:b4678b054027 187 __APB1_RELEASE_RESET();
dudmuck 335:b4678b054027 188
dudmuck 335:b4678b054027 189 __APB2_FORCE_RESET();
dudmuck 335:b4678b054027 190 __APB2_RELEASE_RESET();
dudmuck 335:b4678b054027 191
dudmuck 335:b4678b054027 192 __AHB_FORCE_RESET();
dudmuck 335:b4678b054027 193 __AHB_RELEASE_RESET();
dudmuck 335:b4678b054027 194
dudmuck 335:b4678b054027 195 /* De-Init the low level hardware */
dudmuck 335:b4678b054027 196 HAL_MspDeInit();
dudmuck 335:b4678b054027 197
dudmuck 335:b4678b054027 198 /* Return function status */
dudmuck 335:b4678b054027 199 return HAL_OK;
dudmuck 335:b4678b054027 200 }
dudmuck 335:b4678b054027 201
dudmuck 335:b4678b054027 202 /**
dudmuck 335:b4678b054027 203 * @brief Initializes the MSP.
dudmuck 335:b4678b054027 204 * @retval None
dudmuck 335:b4678b054027 205 */
dudmuck 335:b4678b054027 206 __weak void HAL_MspInit(void)
dudmuck 335:b4678b054027 207 {
dudmuck 335:b4678b054027 208 /* NOTE : This function Should not be modified, when the callback is needed,
dudmuck 335:b4678b054027 209 the HAL_MspInit could be implemented in the user file
dudmuck 335:b4678b054027 210 */
dudmuck 335:b4678b054027 211 }
dudmuck 335:b4678b054027 212
dudmuck 335:b4678b054027 213 /**
dudmuck 335:b4678b054027 214 * @brief DeInitializes the MSP.
dudmuck 335:b4678b054027 215 * @retval None
dudmuck 335:b4678b054027 216 */
dudmuck 335:b4678b054027 217 __weak void HAL_MspDeInit(void)
dudmuck 335:b4678b054027 218 {
dudmuck 335:b4678b054027 219 /* NOTE : This function Should not be modified, when the callback is needed,
dudmuck 335:b4678b054027 220 the HAL_MspDeInit could be implemented in the user file
dudmuck 335:b4678b054027 221 */
dudmuck 335:b4678b054027 222 }
dudmuck 335:b4678b054027 223
dudmuck 335:b4678b054027 224 /**
dudmuck 335:b4678b054027 225 * @brief This function configures the source of the time base.
dudmuck 335:b4678b054027 226 * The time source is configured to have 1ms time base with a dedicated
dudmuck 335:b4678b054027 227 * Tick interrupt priority.
dudmuck 335:b4678b054027 228 * @note This function is called automatically at the beginning of program after
dudmuck 335:b4678b054027 229 * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig().
dudmuck 335:b4678b054027 230 * @note In the default implementation, SysTick timer is the source of time base.
dudmuck 335:b4678b054027 231 * It is used to generate interrupts at regular time intervals.
dudmuck 335:b4678b054027 232 * Care must be taken if HAL_Delay() is called from a peripheral ISR process,
dudmuck 335:b4678b054027 233 * The the SysTick interrupt must have higher priority (numerically lower)
dudmuck 335:b4678b054027 234 * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
dudmuck 335:b4678b054027 235 * The function is declared as __Weak to be overwritten in case of other
dudmuck 335:b4678b054027 236 * implementation in user file.
dudmuck 335:b4678b054027 237 * @param TickPriority: Tick interrupt priority.
dudmuck 335:b4678b054027 238 * @retval HAL status
dudmuck 335:b4678b054027 239 */
dudmuck 335:b4678b054027 240 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
dudmuck 335:b4678b054027 241 {
dudmuck 335:b4678b054027 242 /*Configure the SysTick to have interrupt in 1ms time basis*/
dudmuck 335:b4678b054027 243 HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
dudmuck 335:b4678b054027 244
dudmuck 335:b4678b054027 245 /*Configure the SysTick IRQ priority */
dudmuck 335:b4678b054027 246 HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);
dudmuck 335:b4678b054027 247
dudmuck 335:b4678b054027 248 /* Return function status */
dudmuck 335:b4678b054027 249 return HAL_OK;
dudmuck 335:b4678b054027 250 }
dudmuck 335:b4678b054027 251
dudmuck 335:b4678b054027 252 /**
dudmuck 335:b4678b054027 253 * @}
dudmuck 335:b4678b054027 254 */
dudmuck 335:b4678b054027 255
dudmuck 335:b4678b054027 256 /** @defgroup HAL_Exported_Functions_Group2 HAL Control functions
dudmuck 335:b4678b054027 257 * @brief HAL Control functions
dudmuck 335:b4678b054027 258 *
dudmuck 335:b4678b054027 259 @verbatim
dudmuck 335:b4678b054027 260 ===============================================================================
dudmuck 335:b4678b054027 261 ##### HAL Control functions #####
dudmuck 335:b4678b054027 262 ===============================================================================
dudmuck 335:b4678b054027 263 [..] This section provides functions allowing to:
dudmuck 335:b4678b054027 264 (+) Provide a tick value in millisecond
dudmuck 335:b4678b054027 265 (+) Provide a blocking delay in millisecond
dudmuck 335:b4678b054027 266 (+) Suspend the time base source interrupt
dudmuck 335:b4678b054027 267 (+) Resume the time base source interrupt
dudmuck 335:b4678b054027 268 (+) Get the HAL API driver version
dudmuck 335:b4678b054027 269 (+) Get the device identifier
dudmuck 335:b4678b054027 270 (+) Get the device revision identifier
dudmuck 335:b4678b054027 271 (+) Enable/Disable Debug module during Sleep mode
dudmuck 335:b4678b054027 272 (+) Enable/Disable Debug module during STOP mode
dudmuck 335:b4678b054027 273 (+) Enable/Disable Debug module during STANDBY mode
dudmuck 335:b4678b054027 274
dudmuck 335:b4678b054027 275 @endverbatim
dudmuck 335:b4678b054027 276 * @{
dudmuck 335:b4678b054027 277 */
dudmuck 335:b4678b054027 278
dudmuck 335:b4678b054027 279 /**
dudmuck 335:b4678b054027 280 * @brief This function is called to increment a global variable "uwTick"
dudmuck 335:b4678b054027 281 * used as application time base.
dudmuck 335:b4678b054027 282 * @note In the default implementation, this variable is incremented each 1ms
dudmuck 335:b4678b054027 283 * in Systick ISR.
dudmuck 335:b4678b054027 284 * @note This function is declared as __weak to be overwritten in case of other
dudmuck 335:b4678b054027 285 * implementations in user file.
dudmuck 335:b4678b054027 286 * @retval None
dudmuck 335:b4678b054027 287 */
dudmuck 335:b4678b054027 288 __weak void HAL_IncTick(void)
dudmuck 335:b4678b054027 289 {
dudmuck 335:b4678b054027 290 uwTick++;
dudmuck 335:b4678b054027 291 }
dudmuck 335:b4678b054027 292
dudmuck 335:b4678b054027 293 /**
dudmuck 335:b4678b054027 294 * @brief Provides a tick value in millisecond.
dudmuck 335:b4678b054027 295 * @note This function is declared as __weak to be overwritten in case of other
dudmuck 335:b4678b054027 296 * implementations in user file.
dudmuck 335:b4678b054027 297 * @retval tick value
dudmuck 335:b4678b054027 298 */
dudmuck 335:b4678b054027 299 __weak uint32_t HAL_GetTick(void)
dudmuck 335:b4678b054027 300 {
dudmuck 335:b4678b054027 301 return uwTick;
dudmuck 335:b4678b054027 302 }
dudmuck 335:b4678b054027 303
dudmuck 335:b4678b054027 304 /**
dudmuck 335:b4678b054027 305 * @brief This function provides accurate delay (in milliseconds) based
dudmuck 335:b4678b054027 306 * on variable incremented.
dudmuck 335:b4678b054027 307 * @note In the default implementation , SysTick timer is the source of time base.
dudmuck 335:b4678b054027 308 * It is used to generate interrupts at regular time intervals where uwTick
dudmuck 335:b4678b054027 309 * is incremented.
dudmuck 335:b4678b054027 310 * @note ThiS function is declared as __weak to be overwritten in case of other
dudmuck 335:b4678b054027 311 * implementations in user file.
dudmuck 335:b4678b054027 312 * @param Delay: specifies the delay time length, in milliseconds.
dudmuck 335:b4678b054027 313 * @retval None
dudmuck 335:b4678b054027 314 */
dudmuck 335:b4678b054027 315 __weak void HAL_Delay(__IO uint32_t Delay)
dudmuck 335:b4678b054027 316 {
dudmuck 335:b4678b054027 317 uint32_t tickstart = 0;
dudmuck 335:b4678b054027 318 tickstart = HAL_GetTick();
dudmuck 335:b4678b054027 319 while((HAL_GetTick() - tickstart) < Delay)
dudmuck 335:b4678b054027 320 {
dudmuck 335:b4678b054027 321 }
dudmuck 335:b4678b054027 322 }
dudmuck 335:b4678b054027 323
dudmuck 335:b4678b054027 324 /**
dudmuck 335:b4678b054027 325 * @brief Suspend Tick increment.
dudmuck 335:b4678b054027 326 * @note In the default implementation , SysTick timer is the source of time base. It is
dudmuck 335:b4678b054027 327 * used to generate interrupts at regular time intervals. Once HAL_SuspendTick()
dudmuck 335:b4678b054027 328 * is called, the the SysTick interrupt will be disabled and so Tick increment
dudmuck 335:b4678b054027 329 * is suspended.
dudmuck 335:b4678b054027 330 * @note This function is declared as __weak to be overwritten in case of other
dudmuck 335:b4678b054027 331 * implementations in user file.
dudmuck 335:b4678b054027 332 * @retval None
dudmuck 335:b4678b054027 333 */
dudmuck 335:b4678b054027 334 __weak void HAL_SuspendTick(void)
dudmuck 335:b4678b054027 335 {
dudmuck 335:b4678b054027 336 /* Disable SysTick Interrupt */
dudmuck 335:b4678b054027 337 CLEAR_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk);
dudmuck 335:b4678b054027 338 }
dudmuck 335:b4678b054027 339
dudmuck 335:b4678b054027 340 /**
dudmuck 335:b4678b054027 341 * @brief Resume Tick increment.
dudmuck 335:b4678b054027 342 * @note In the default implementation , SysTick timer is the source of time base. It is
dudmuck 335:b4678b054027 343 * used to generate interrupts at regular time intervals. Once HAL_ResumeTick()
dudmuck 335:b4678b054027 344 * is called, the the SysTick interrupt will be enabled and so Tick increment
dudmuck 335:b4678b054027 345 * is resumed.
dudmuck 335:b4678b054027 346 * @note This function is declared as __weak to be overwritten in case of other
dudmuck 335:b4678b054027 347 * implementations in user file.
dudmuck 335:b4678b054027 348 * @retval None
dudmuck 335:b4678b054027 349 */
dudmuck 335:b4678b054027 350 __weak void HAL_ResumeTick(void)
dudmuck 335:b4678b054027 351 {
dudmuck 335:b4678b054027 352 /* Enable SysTick Interrupt */
dudmuck 335:b4678b054027 353 SET_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk);
dudmuck 335:b4678b054027 354 }
dudmuck 335:b4678b054027 355
dudmuck 335:b4678b054027 356 /**
dudmuck 335:b4678b054027 357 * @brief Returns the HAL revision
dudmuck 335:b4678b054027 358 * @retval version: 0xXYZR (8bits for each decimal, R for RC)
dudmuck 335:b4678b054027 359 */
dudmuck 335:b4678b054027 360 uint32_t HAL_GetHalVersion(void)
dudmuck 335:b4678b054027 361 {
dudmuck 335:b4678b054027 362 return __STM32L1xx_HAL_VERSION;
dudmuck 335:b4678b054027 363 }
dudmuck 335:b4678b054027 364
dudmuck 335:b4678b054027 365 /**
dudmuck 335:b4678b054027 366 * @brief Returns the device revision identifier.
dudmuck 335:b4678b054027 367 * @retval Device revision identifier
dudmuck 335:b4678b054027 368 */
dudmuck 335:b4678b054027 369 uint32_t HAL_GetREVID(void)
dudmuck 335:b4678b054027 370 {
dudmuck 335:b4678b054027 371 return((DBGMCU->IDCODE) >> 16);
dudmuck 335:b4678b054027 372 }
dudmuck 335:b4678b054027 373
dudmuck 335:b4678b054027 374 /**
dudmuck 335:b4678b054027 375 * @brief Returns the device identifier.
dudmuck 335:b4678b054027 376 * @retval Device identifier
dudmuck 335:b4678b054027 377 */
dudmuck 335:b4678b054027 378 uint32_t HAL_GetDEVID(void)
dudmuck 335:b4678b054027 379 {
dudmuck 335:b4678b054027 380 return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);
dudmuck 335:b4678b054027 381 }
dudmuck 335:b4678b054027 382
dudmuck 335:b4678b054027 383 /**
dudmuck 335:b4678b054027 384 * @brief Enable the Debug Module during SLEEP mode
dudmuck 335:b4678b054027 385 * @retval None
dudmuck 335:b4678b054027 386 */
dudmuck 335:b4678b054027 387 void HAL_EnableDBGSleepMode(void)
dudmuck 335:b4678b054027 388 {
dudmuck 335:b4678b054027 389 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
dudmuck 335:b4678b054027 390 }
dudmuck 335:b4678b054027 391
dudmuck 335:b4678b054027 392 /**
dudmuck 335:b4678b054027 393 * @brief Disable the Debug Module during SLEEP mode
dudmuck 335:b4678b054027 394 * @retval None
dudmuck 335:b4678b054027 395 */
dudmuck 335:b4678b054027 396 void HAL_DisableDBGSleepMode(void)
dudmuck 335:b4678b054027 397 {
dudmuck 335:b4678b054027 398 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
dudmuck 335:b4678b054027 399 }
dudmuck 335:b4678b054027 400
dudmuck 335:b4678b054027 401 /**
dudmuck 335:b4678b054027 402 * @brief Enable the Debug Module during STOP mode
dudmuck 335:b4678b054027 403 * @retval None
dudmuck 335:b4678b054027 404 */
dudmuck 335:b4678b054027 405 void HAL_EnableDBGStopMode(void)
dudmuck 335:b4678b054027 406 {
dudmuck 335:b4678b054027 407 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
dudmuck 335:b4678b054027 408 }
dudmuck 335:b4678b054027 409
dudmuck 335:b4678b054027 410 /**
dudmuck 335:b4678b054027 411 * @brief Disable the Debug Module during STOP mode
dudmuck 335:b4678b054027 412 * @retval None
dudmuck 335:b4678b054027 413 */
dudmuck 335:b4678b054027 414 void HAL_DisableDBGStopMode(void)
dudmuck 335:b4678b054027 415 {
dudmuck 335:b4678b054027 416 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
dudmuck 335:b4678b054027 417 }
dudmuck 335:b4678b054027 418
dudmuck 335:b4678b054027 419 /**
dudmuck 335:b4678b054027 420 * @brief Enable the Debug Module during STANDBY mode
dudmuck 335:b4678b054027 421 * @retval None
dudmuck 335:b4678b054027 422 */
dudmuck 335:b4678b054027 423 void HAL_EnableDBGStandbyMode(void)
dudmuck 335:b4678b054027 424 {
dudmuck 335:b4678b054027 425 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
dudmuck 335:b4678b054027 426 }
dudmuck 335:b4678b054027 427
dudmuck 335:b4678b054027 428 /**
dudmuck 335:b4678b054027 429 * @brief Disable the Debug Module during STANDBY mode
dudmuck 335:b4678b054027 430 * @retval None
dudmuck 335:b4678b054027 431 */
dudmuck 335:b4678b054027 432 void HAL_DisableDBGStandbyMode(void)
dudmuck 335:b4678b054027 433 {
dudmuck 335:b4678b054027 434 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
dudmuck 335:b4678b054027 435 }
dudmuck 335:b4678b054027 436
dudmuck 335:b4678b054027 437 /**
dudmuck 335:b4678b054027 438 * @}
dudmuck 335:b4678b054027 439 */
dudmuck 335:b4678b054027 440
dudmuck 335:b4678b054027 441 /**
dudmuck 335:b4678b054027 442 * @}
dudmuck 335:b4678b054027 443 */
dudmuck 335:b4678b054027 444
dudmuck 335:b4678b054027 445 #endif /* HAL_MODULE_ENABLED */
dudmuck 335:b4678b054027 446 /**
dudmuck 335:b4678b054027 447 * @}
dudmuck 335:b4678b054027 448 */
dudmuck 335:b4678b054027 449
dudmuck 335:b4678b054027 450 /**
dudmuck 335:b4678b054027 451 * @}
dudmuck 335:b4678b054027 452 */
dudmuck 335:b4678b054027 453
dudmuck 335:b4678b054027 454 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/