mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
186:707f6e361f3e
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**
<> 144:ef7eb2e8f9f7 2 ******************************************************************************
<> 144:ef7eb2e8f9f7 3 * @file stm32l0xx_hal.c
<> 144:ef7eb2e8f9f7 4 * @author MCD Application Team
<> 144:ef7eb2e8f9f7 5 * @brief HAL module driver.
<> 144:ef7eb2e8f9f7 6 * This is the common part of the HAL initialization
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 @verbatim
<> 144:ef7eb2e8f9f7 9 ==============================================================================
<> 144:ef7eb2e8f9f7 10 ##### How to use this driver #####
<> 144:ef7eb2e8f9f7 11 ==============================================================================
<> 144:ef7eb2e8f9f7 12 [..]
<> 144:ef7eb2e8f9f7 13 The common HAL driver contains a set of generic and common APIs that can be
<> 144:ef7eb2e8f9f7 14 used by the PPP peripheral drivers and the user to start using the HAL.
<> 144:ef7eb2e8f9f7 15 [..]
<> 144:ef7eb2e8f9f7 16 The HAL contains two APIs categories:
<> 144:ef7eb2e8f9f7 17 (+) Common HAL APIs
<> 144:ef7eb2e8f9f7 18 (+) Services HAL APIs
<> 144:ef7eb2e8f9f7 19
<> 144:ef7eb2e8f9f7 20 @endverbatim
<> 144:ef7eb2e8f9f7 21 ******************************************************************************
<> 144:ef7eb2e8f9f7 22 * @attention
<> 144:ef7eb2e8f9f7 23 *
<> 144:ef7eb2e8f9f7 24 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
<> 144:ef7eb2e8f9f7 25 *
<> 144:ef7eb2e8f9f7 26 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 27 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 28 * 1. Redistributions of source code must retain the above copyright notice,
<> 144:ef7eb2e8f9f7 29 * this list of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 30 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 144:ef7eb2e8f9f7 31 * this list of conditions and the following disclaimer in the documentation
<> 144:ef7eb2e8f9f7 32 * and/or other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 33 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 144:ef7eb2e8f9f7 34 * may be used to endorse or promote products derived from this software
<> 144:ef7eb2e8f9f7 35 * without specific prior written permission.
<> 144:ef7eb2e8f9f7 36 *
<> 144:ef7eb2e8f9f7 37 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 144:ef7eb2e8f9f7 38 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 144:ef7eb2e8f9f7 39 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 40 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 144:ef7eb2e8f9f7 41 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 144:ef7eb2e8f9f7 42 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 144:ef7eb2e8f9f7 43 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 144:ef7eb2e8f9f7 44 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 144:ef7eb2e8f9f7 45 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 144:ef7eb2e8f9f7 46 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 47 *
<> 144:ef7eb2e8f9f7 48 ******************************************************************************
<> 144:ef7eb2e8f9f7 49 */
<> 144:ef7eb2e8f9f7 50
<> 144:ef7eb2e8f9f7 51 /* Includes ------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 52 #include "stm32l0xx_hal.h"
<> 144:ef7eb2e8f9f7 53
<> 144:ef7eb2e8f9f7 54 /** @addtogroup STM32L0xx_HAL_Driver
<> 144:ef7eb2e8f9f7 55 * @{
<> 144:ef7eb2e8f9f7 56 */
<> 144:ef7eb2e8f9f7 57
<> 144:ef7eb2e8f9f7 58 #ifdef HAL_MODULE_ENABLED
<> 144:ef7eb2e8f9f7 59
<> 144:ef7eb2e8f9f7 60 /** @addtogroup HAL
<> 144:ef7eb2e8f9f7 61 * @brief HAL module driver.
<> 144:ef7eb2e8f9f7 62 * @{
<> 144:ef7eb2e8f9f7 63 */
<> 144:ef7eb2e8f9f7 64
<> 144:ef7eb2e8f9f7 65 /** @addtogroup HAL_Exported_Constants
<> 144:ef7eb2e8f9f7 66 * @{
<> 144:ef7eb2e8f9f7 67 */
<> 144:ef7eb2e8f9f7 68
<> 151:5eaa88a5bcc7 69
<> 151:5eaa88a5bcc7 70 /** @defgroup SysTick System Tick
<> 151:5eaa88a5bcc7 71 * @{
<> 151:5eaa88a5bcc7 72 */
<> 151:5eaa88a5bcc7 73 /**
<> 151:5eaa88a5bcc7 74 * @brief uwTick_variable uwTick variable
<> 151:5eaa88a5bcc7 75 */
<> 151:5eaa88a5bcc7 76 __IO uint32_t uwTick;
<> 151:5eaa88a5bcc7 77
<> 151:5eaa88a5bcc7 78 /**
<> 151:5eaa88a5bcc7 79 * @}
<> 151:5eaa88a5bcc7 80 */
<> 151:5eaa88a5bcc7 81
<> 144:ef7eb2e8f9f7 82 /** @defgroup HAL_Version HAL Version
<> 144:ef7eb2e8f9f7 83 * @{
<> 144:ef7eb2e8f9f7 84 */
<> 144:ef7eb2e8f9f7 85
<> 144:ef7eb2e8f9f7 86 /**
Anna Bridge 186:707f6e361f3e 87 * @brief STM32L0xx HAL Driver version number
<> 144:ef7eb2e8f9f7 88 */
<> 151:5eaa88a5bcc7 89 #define __STM32L0xx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */
Anna Bridge 186:707f6e361f3e 90 #define __STM32L0xx_HAL_VERSION_SUB1 (0x08U) /*!< [23:16] sub1 version */
Anna Bridge 186:707f6e361f3e 91 #define __STM32L0xx_HAL_VERSION_SUB2 (0x02U) /*!< [15:8] sub2 version */
<> 151:5eaa88a5bcc7 92 #define __STM32L0xx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */
<> 151:5eaa88a5bcc7 93 #define __STM32L0xx_HAL_VERSION ((__STM32L0xx_HAL_VERSION_MAIN << 24U)\
<> 151:5eaa88a5bcc7 94 |(__STM32L0xx_HAL_VERSION_SUB1 << 16U)\
<> 151:5eaa88a5bcc7 95 |(__STM32L0xx_HAL_VERSION_SUB2 << 8U )\
<> 144:ef7eb2e8f9f7 96 |(__STM32L0xx_HAL_VERSION_RC))
<> 144:ef7eb2e8f9f7 97
<> 151:5eaa88a5bcc7 98 #define IDCODE_DEVID_MASK ((uint32_t)0x00000FFFU)
<> 144:ef7eb2e8f9f7 99
<> 144:ef7eb2e8f9f7 100 /**
<> 144:ef7eb2e8f9f7 101 * @}
<> 144:ef7eb2e8f9f7 102 */
<> 144:ef7eb2e8f9f7 103
<> 144:ef7eb2e8f9f7 104 /**
<> 144:ef7eb2e8f9f7 105 * @}
<> 144:ef7eb2e8f9f7 106 */
<> 144:ef7eb2e8f9f7 107 /** @defgroup HAL_Private HAL Private
<> 144:ef7eb2e8f9f7 108 * @{
<> 144:ef7eb2e8f9f7 109 */
<> 151:5eaa88a5bcc7 110
<> 144:ef7eb2e8f9f7 111
<> 144:ef7eb2e8f9f7 112 /**
<> 144:ef7eb2e8f9f7 113 * @}
<> 144:ef7eb2e8f9f7 114 */
<> 144:ef7eb2e8f9f7 115
<> 144:ef7eb2e8f9f7 116 /** @addtogroup HAL_Exported_Functions HAL Exported Functions
<> 144:ef7eb2e8f9f7 117 * @{
<> 144:ef7eb2e8f9f7 118 */
<> 144:ef7eb2e8f9f7 119
<> 144:ef7eb2e8f9f7 120 /** @addtogroup HAL_Exported_Functions_Group1
<> 144:ef7eb2e8f9f7 121 * @brief Initialization and de-initialization functions
<> 144:ef7eb2e8f9f7 122 *
<> 144:ef7eb2e8f9f7 123 @verbatim
<> 144:ef7eb2e8f9f7 124 ===============================================================================
<> 144:ef7eb2e8f9f7 125 ##### Initialization and de-initialization functions #####
<> 144:ef7eb2e8f9f7 126 ===============================================================================
<> 144:ef7eb2e8f9f7 127 [..] This section provides functions allowing to:
<> 144:ef7eb2e8f9f7 128 (+) Initializes the Flash interface, the NVIC allocation and initial clock
<> 144:ef7eb2e8f9f7 129 configuration. It initializes the source of time base also when timeout
<> 144:ef7eb2e8f9f7 130 is needed and the backup domain when enabled.
<> 144:ef7eb2e8f9f7 131 (+) de-Initializes common part of the HAL.
<> 144:ef7eb2e8f9f7 132 (+) Configure The time base source to have 1ms time base with a dedicated
<> 144:ef7eb2e8f9f7 133 Tick interrupt priority.
<> 144:ef7eb2e8f9f7 134 (++) Systick timer is used by default as source of time base, but user
<> 144:ef7eb2e8f9f7 135 can eventually implement his proper time base source (a general purpose
<> 144:ef7eb2e8f9f7 136 timer for example or other time source), keeping in mind that Time base
<> 144:ef7eb2e8f9f7 137 duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
<> 144:ef7eb2e8f9f7 138 handled in milliseconds basis.
<> 144:ef7eb2e8f9f7 139 (++) Time base configuration function (HAL_InitTick ()) is called automatically
<> 144:ef7eb2e8f9f7 140 at the beginning of the program after reset by HAL_Init() or at any time
<> 144:ef7eb2e8f9f7 141 when clock is configured, by HAL_RCC_ClockConfig().
<> 144:ef7eb2e8f9f7 142 (++) Source of time base is configured to generate interrupts at regular
<> 144:ef7eb2e8f9f7 143 time intervals. Care must be taken if HAL_Delay() is called from a
<> 144:ef7eb2e8f9f7 144 peripheral ISR process, the Tick interrupt line must have higher priority
<> 144:ef7eb2e8f9f7 145 (numerically lower) than the peripheral interrupt. Otherwise the caller
<> 144:ef7eb2e8f9f7 146 ISR process will be blocked.
<> 144:ef7eb2e8f9f7 147 (++) functions affecting time base configurations are declared as __weak
<> 144:ef7eb2e8f9f7 148 to make override possible in case of other implementations in user file.
<> 144:ef7eb2e8f9f7 149
<> 144:ef7eb2e8f9f7 150 @endverbatim
<> 144:ef7eb2e8f9f7 151 * @{
<> 144:ef7eb2e8f9f7 152 */
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 /**
<> 144:ef7eb2e8f9f7 155 * @brief This function configures the Flash prefetch, Flash preread and Buffer cache,
<> 144:ef7eb2e8f9f7 156 * Configures time base source, NVIC and Low level hardware
<> 144:ef7eb2e8f9f7 157 * @note This function is called at the beginning of program after reset and before
<> 144:ef7eb2e8f9f7 158 * the clock configuration
<> 144:ef7eb2e8f9f7 159 * @note The time base configuration is based on MSI clock when exiting from Reset.
<> 144:ef7eb2e8f9f7 160 * Once done, time base tick start incrementing.
<> 144:ef7eb2e8f9f7 161 * In the default implementation,Systick is used as source of time base.
<> 144:ef7eb2e8f9f7 162 * the tick variable is incremented each 1ms in its ISR.
<> 144:ef7eb2e8f9f7 163 * @retval HAL status
<> 144:ef7eb2e8f9f7 164 */
<> 144:ef7eb2e8f9f7 165 HAL_StatusTypeDef HAL_Init(void)
<> 144:ef7eb2e8f9f7 166 {
<> 144:ef7eb2e8f9f7 167 /* Configure Buffer cache, Flash prefetch, Flash preread */
<> 144:ef7eb2e8f9f7 168 #if (BUFFER_CACHE_DISABLE != 0)
<> 144:ef7eb2e8f9f7 169 __HAL_FLASH_BUFFER_CACHE_DISABLE();
<> 144:ef7eb2e8f9f7 170 #endif /* BUFFER_CACHE_DISABLE */
<> 144:ef7eb2e8f9f7 171
<> 144:ef7eb2e8f9f7 172 #if (PREREAD_ENABLE != 0)
<> 144:ef7eb2e8f9f7 173 __HAL_FLASH_PREREAD_BUFFER_ENABLE();
<> 144:ef7eb2e8f9f7 174 #endif /* PREREAD_ENABLE */
<> 144:ef7eb2e8f9f7 175
<> 144:ef7eb2e8f9f7 176 #if (PREFETCH_ENABLE != 0)
<> 144:ef7eb2e8f9f7 177 __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
<> 144:ef7eb2e8f9f7 178 #endif /* PREFETCH_ENABLE */
<> 144:ef7eb2e8f9f7 179
<> 144:ef7eb2e8f9f7 180 /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */
<> 144:ef7eb2e8f9f7 181
<> 144:ef7eb2e8f9f7 182 HAL_InitTick(TICK_INT_PRIORITY);
<> 144:ef7eb2e8f9f7 183
<> 144:ef7eb2e8f9f7 184 /* Init the low level hardware */
<> 144:ef7eb2e8f9f7 185 HAL_MspInit();
<> 144:ef7eb2e8f9f7 186
<> 144:ef7eb2e8f9f7 187 /* Return function status */
<> 144:ef7eb2e8f9f7 188 return HAL_OK;
<> 144:ef7eb2e8f9f7 189 }
<> 144:ef7eb2e8f9f7 190
<> 144:ef7eb2e8f9f7 191 /**
<> 144:ef7eb2e8f9f7 192 * @brief This function de-Initializes common part of the HAL and stops the source
<> 144:ef7eb2e8f9f7 193 * of time base.
<> 144:ef7eb2e8f9f7 194 * @note This function is optional.
<> 144:ef7eb2e8f9f7 195 * @retval HAL status
<> 144:ef7eb2e8f9f7 196 */
<> 144:ef7eb2e8f9f7 197 HAL_StatusTypeDef HAL_DeInit(void)
<> 144:ef7eb2e8f9f7 198 {
<> 144:ef7eb2e8f9f7 199 /* Reset of all peripherals */
<> 144:ef7eb2e8f9f7 200 __HAL_RCC_APB1_FORCE_RESET();
<> 144:ef7eb2e8f9f7 201 __HAL_RCC_APB1_RELEASE_RESET();
<> 144:ef7eb2e8f9f7 202
<> 144:ef7eb2e8f9f7 203 __HAL_RCC_APB2_FORCE_RESET();
<> 144:ef7eb2e8f9f7 204 __HAL_RCC_APB2_RELEASE_RESET();
<> 144:ef7eb2e8f9f7 205
<> 144:ef7eb2e8f9f7 206 __HAL_RCC_AHB_FORCE_RESET();
<> 144:ef7eb2e8f9f7 207 __HAL_RCC_AHB_RELEASE_RESET();
<> 144:ef7eb2e8f9f7 208
<> 144:ef7eb2e8f9f7 209 __HAL_RCC_IOP_FORCE_RESET();
<> 144:ef7eb2e8f9f7 210 __HAL_RCC_IOP_RELEASE_RESET();
<> 144:ef7eb2e8f9f7 211
<> 144:ef7eb2e8f9f7 212 /* De-Init the low level hardware */
<> 144:ef7eb2e8f9f7 213 HAL_MspDeInit();
<> 144:ef7eb2e8f9f7 214
<> 144:ef7eb2e8f9f7 215 /* Return function status */
<> 144:ef7eb2e8f9f7 216 return HAL_OK;
<> 144:ef7eb2e8f9f7 217 }
<> 144:ef7eb2e8f9f7 218
<> 144:ef7eb2e8f9f7 219 /**
<> 144:ef7eb2e8f9f7 220 * @brief Initializes the MSP.
<> 144:ef7eb2e8f9f7 221 * @retval None
<> 144:ef7eb2e8f9f7 222 */
<> 144:ef7eb2e8f9f7 223 __weak void HAL_MspInit(void)
<> 144:ef7eb2e8f9f7 224 {
<> 144:ef7eb2e8f9f7 225 /* NOTE : This function Should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 226 the HAL_MspInit could be implemented in the user file
<> 144:ef7eb2e8f9f7 227 */
<> 144:ef7eb2e8f9f7 228 }
<> 144:ef7eb2e8f9f7 229
<> 144:ef7eb2e8f9f7 230 /**
<> 144:ef7eb2e8f9f7 231 * @brief DeInitializes the MSP.
<> 144:ef7eb2e8f9f7 232 * @retval None
<> 144:ef7eb2e8f9f7 233 */
<> 144:ef7eb2e8f9f7 234 __weak void HAL_MspDeInit(void)
<> 144:ef7eb2e8f9f7 235 {
<> 144:ef7eb2e8f9f7 236 /* NOTE : This function Should not be modified, when the callback is needed,
<> 144:ef7eb2e8f9f7 237 the HAL_MspDeInit could be implemented in the user file
<> 144:ef7eb2e8f9f7 238 */
<> 144:ef7eb2e8f9f7 239 }
<> 144:ef7eb2e8f9f7 240
<> 144:ef7eb2e8f9f7 241
<> 144:ef7eb2e8f9f7 242 /**
<> 144:ef7eb2e8f9f7 243 * @brief This function configures the source of the time base.
<> 144:ef7eb2e8f9f7 244 * The time source is configured to have 1ms time base with a dedicated
<> 144:ef7eb2e8f9f7 245 * Tick interrupt priority.
<> 144:ef7eb2e8f9f7 246 * @note This function is called automatically at the beginning of program after
<> 144:ef7eb2e8f9f7 247 * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig().
<> 144:ef7eb2e8f9f7 248 * @note In the default implementation, SysTick timer is the source of time base.
<> 144:ef7eb2e8f9f7 249 * It is used to generate interrupts at regular time intervals.
<> 144:ef7eb2e8f9f7 250 * Care must be taken if HAL_Delay() is called from a peripheral ISR process,
<> 144:ef7eb2e8f9f7 251 * The the SysTick interrupt must have higher priority (numerically lower)
<> 144:ef7eb2e8f9f7 252 * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
<> 144:ef7eb2e8f9f7 253 * The function is declared as __Weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 254 * implementation in user file.
<> 144:ef7eb2e8f9f7 255 * @param TickPriority: Tick interrupt priority.
<> 144:ef7eb2e8f9f7 256 * @retval HAL status
<> 144:ef7eb2e8f9f7 257 */
<> 144:ef7eb2e8f9f7 258 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
<> 144:ef7eb2e8f9f7 259 {
<> 144:ef7eb2e8f9f7 260 /*Configure the SysTick to have interrupt in 1ms time basis*/
<> 151:5eaa88a5bcc7 261 HAL_SYSTICK_Config(SystemCoreClock/1000U);
<> 144:ef7eb2e8f9f7 262
<> 144:ef7eb2e8f9f7 263 /*Configure the SysTick IRQ priority */
<> 151:5eaa88a5bcc7 264 HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0U);
<> 144:ef7eb2e8f9f7 265
<> 144:ef7eb2e8f9f7 266 /* Return function status */
<> 144:ef7eb2e8f9f7 267 return HAL_OK;
<> 144:ef7eb2e8f9f7 268 }
<> 144:ef7eb2e8f9f7 269
<> 144:ef7eb2e8f9f7 270 /**
<> 144:ef7eb2e8f9f7 271 * @}
<> 144:ef7eb2e8f9f7 272 */
<> 144:ef7eb2e8f9f7 273
<> 144:ef7eb2e8f9f7 274 /** @addtogroup HAL_Exported_Functions_Group2
<> 144:ef7eb2e8f9f7 275 * @brief Peripheral Control functions
<> 144:ef7eb2e8f9f7 276 *
<> 144:ef7eb2e8f9f7 277 @verbatim
<> 144:ef7eb2e8f9f7 278 ===============================================================================
<> 144:ef7eb2e8f9f7 279 ##### HAL Control functions #####
<> 144:ef7eb2e8f9f7 280 ===============================================================================
<> 144:ef7eb2e8f9f7 281 [..] This section provides functions allowing to:
<> 144:ef7eb2e8f9f7 282 (+) Provide a tick value in millisecond
<> 144:ef7eb2e8f9f7 283 (+) Provide a blocking delay in millisecond
<> 144:ef7eb2e8f9f7 284 (+) Suspend the time base source interrupt
<> 144:ef7eb2e8f9f7 285 (+) Resume the time base source interrupt
<> 144:ef7eb2e8f9f7 286 (+) Get the HAL API driver version
<> 144:ef7eb2e8f9f7 287 (+) Get the device identifier
<> 144:ef7eb2e8f9f7 288 (+) Get the device revision identifier
<> 144:ef7eb2e8f9f7 289 (+) Configure low power mode behavior when the MCU is in Debug mode
<> 144:ef7eb2e8f9f7 290 (+) Manage the VEREFINT feature (activation, lock, output selection)
<> 144:ef7eb2e8f9f7 291
<> 144:ef7eb2e8f9f7 292 @endverbatim
<> 144:ef7eb2e8f9f7 293 * @{
<> 144:ef7eb2e8f9f7 294 */
<> 144:ef7eb2e8f9f7 295
<> 144:ef7eb2e8f9f7 296 /**
<> 144:ef7eb2e8f9f7 297 * @brief This function is called to increment a global variable "uwTick"
<> 144:ef7eb2e8f9f7 298 * used as application time base.
<> 144:ef7eb2e8f9f7 299 * @note In the default implementation, this variable is incremented each 1ms
<> 144:ef7eb2e8f9f7 300 * in Systick ISR.
<> 144:ef7eb2e8f9f7 301 * @note This function is declared as __weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 302 * implementations in user file.
<> 144:ef7eb2e8f9f7 303 * @retval None
<> 144:ef7eb2e8f9f7 304 */
<> 144:ef7eb2e8f9f7 305 __weak void HAL_IncTick(void)
<> 144:ef7eb2e8f9f7 306 {
<> 144:ef7eb2e8f9f7 307 uwTick++;
<> 144:ef7eb2e8f9f7 308 }
<> 144:ef7eb2e8f9f7 309
<> 144:ef7eb2e8f9f7 310 /**
<> 144:ef7eb2e8f9f7 311 * @brief Provides a tick value in millisecond.
<> 144:ef7eb2e8f9f7 312 * @note This function is declared as __weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 313 * implementations in user file.
<> 144:ef7eb2e8f9f7 314 * @retval tick value
<> 144:ef7eb2e8f9f7 315 */
<> 144:ef7eb2e8f9f7 316 __weak uint32_t HAL_GetTick(void)
<> 144:ef7eb2e8f9f7 317 {
<> 144:ef7eb2e8f9f7 318 return uwTick;
<> 144:ef7eb2e8f9f7 319 }
<> 144:ef7eb2e8f9f7 320
<> 144:ef7eb2e8f9f7 321 /**
<> 144:ef7eb2e8f9f7 322 * @brief This function provides accurate delay (in ms) based on a variable incremented.
<> 144:ef7eb2e8f9f7 323 * @note In the default implementation , SysTick timer is the source of time base.
<> 144:ef7eb2e8f9f7 324 * It is used to generate interrupts at regular time intervals where uwTick
<> 144:ef7eb2e8f9f7 325 * is incremented.
<> 144:ef7eb2e8f9f7 326 * @note ThiS function is declared as __weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 327 * implementations in user file.
<> 144:ef7eb2e8f9f7 328 * @param Delay: specifies the delay time length, in milliseconds.
<> 144:ef7eb2e8f9f7 329 * @retval None
<> 144:ef7eb2e8f9f7 330 */
<> 144:ef7eb2e8f9f7 331 __weak void HAL_Delay(__IO uint32_t Delay)
<> 144:ef7eb2e8f9f7 332 {
<> 151:5eaa88a5bcc7 333 uint32_t tickstart = 0U;
<> 144:ef7eb2e8f9f7 334 tickstart = HAL_GetTick();
<> 144:ef7eb2e8f9f7 335 while((HAL_GetTick() - tickstart) < Delay)
<> 144:ef7eb2e8f9f7 336 {
<> 144:ef7eb2e8f9f7 337 }
<> 144:ef7eb2e8f9f7 338 }
<> 144:ef7eb2e8f9f7 339
<> 144:ef7eb2e8f9f7 340 /**
<> 144:ef7eb2e8f9f7 341 * @brief Suspends the Tick increment.
<> 144:ef7eb2e8f9f7 342 * @note In the default implementation , SysTick timer is the source of time base. It is
<> 144:ef7eb2e8f9f7 343 * used to generate interrupts at regular time intervals. Once HAL_SuspendTick()
<> 144:ef7eb2e8f9f7 344 * is called, the the SysTick interrupt will be disabled and so Tick increment
<> 144:ef7eb2e8f9f7 345 * is suspended.
<> 144:ef7eb2e8f9f7 346 * @note This function is declared as __weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 347 * implementations in user file.
<> 144:ef7eb2e8f9f7 348 * @retval None
<> 144:ef7eb2e8f9f7 349 */
<> 144:ef7eb2e8f9f7 350 __weak void HAL_SuspendTick(void)
<> 144:ef7eb2e8f9f7 351 {
<> 144:ef7eb2e8f9f7 352 /* Disable SysTick Interrupt */
<> 144:ef7eb2e8f9f7 353 SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
<> 144:ef7eb2e8f9f7 354 }
<> 144:ef7eb2e8f9f7 355
<> 144:ef7eb2e8f9f7 356 /**
<> 144:ef7eb2e8f9f7 357 * @brief Resumes the Tick increment.
<> 144:ef7eb2e8f9f7 358 * @note In the default implementation , SysTick timer is the source of time base. It is
<> 144:ef7eb2e8f9f7 359 * used to generate interrupts at regular time intervals. Once HAL_ResumeTick()
<> 144:ef7eb2e8f9f7 360 * is called, the the SysTick interrupt will be enabled and so Tick increment
<> 144:ef7eb2e8f9f7 361 * is resumed.
<> 144:ef7eb2e8f9f7 362 * @note This function is declared as __weak to be overwritten in case of other
<> 144:ef7eb2e8f9f7 363 * implementations in user file.
<> 144:ef7eb2e8f9f7 364 * @retval None
<> 144:ef7eb2e8f9f7 365 */
<> 144:ef7eb2e8f9f7 366 __weak void HAL_ResumeTick(void)
<> 144:ef7eb2e8f9f7 367 {
<> 144:ef7eb2e8f9f7 368 /* Enable SysTick Interrupt */
<> 144:ef7eb2e8f9f7 369 SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
<> 144:ef7eb2e8f9f7 370 }
<> 144:ef7eb2e8f9f7 371
<> 144:ef7eb2e8f9f7 372 /**
<> 144:ef7eb2e8f9f7 373 * @brief Returns the HAL revision
<> 144:ef7eb2e8f9f7 374 * @retval version: 0xXYZR (8bits for each decimal, R for RC)
<> 144:ef7eb2e8f9f7 375 */
<> 144:ef7eb2e8f9f7 376 uint32_t HAL_GetHalVersion(void)
<> 144:ef7eb2e8f9f7 377 {
<> 144:ef7eb2e8f9f7 378 return __STM32L0xx_HAL_VERSION;
<> 144:ef7eb2e8f9f7 379 }
<> 144:ef7eb2e8f9f7 380
<> 144:ef7eb2e8f9f7 381 /**
<> 144:ef7eb2e8f9f7 382 * @brief Returns the device revision identifier.
<> 144:ef7eb2e8f9f7 383 * @retval Device revision identifier
<> 144:ef7eb2e8f9f7 384 */
<> 144:ef7eb2e8f9f7 385 uint32_t HAL_GetREVID(void)
<> 144:ef7eb2e8f9f7 386 {
<> 151:5eaa88a5bcc7 387 return((DBGMCU->IDCODE) >> 16U);
<> 144:ef7eb2e8f9f7 388 }
<> 144:ef7eb2e8f9f7 389
<> 144:ef7eb2e8f9f7 390 /**
<> 144:ef7eb2e8f9f7 391 * @brief Returns the device identifier.
<> 144:ef7eb2e8f9f7 392 * @retval Device identifier
<> 144:ef7eb2e8f9f7 393 */
<> 144:ef7eb2e8f9f7 394 uint32_t HAL_GetDEVID(void)
<> 144:ef7eb2e8f9f7 395 {
<> 144:ef7eb2e8f9f7 396 return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);
<> 144:ef7eb2e8f9f7 397 }
<> 144:ef7eb2e8f9f7 398
<> 144:ef7eb2e8f9f7 399 /**
<> 144:ef7eb2e8f9f7 400 * @brief Enables the Debug Module during SLEEP mode
<> 144:ef7eb2e8f9f7 401 * @retval None
<> 144:ef7eb2e8f9f7 402 */
<> 144:ef7eb2e8f9f7 403 void HAL_DBGMCU_EnableDBGSleepMode(void)
<> 144:ef7eb2e8f9f7 404 {
<> 144:ef7eb2e8f9f7 405 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
<> 144:ef7eb2e8f9f7 406 }
<> 144:ef7eb2e8f9f7 407
<> 144:ef7eb2e8f9f7 408 /**
<> 144:ef7eb2e8f9f7 409 * @brief Disables the Debug Module during SLEEP mode
<> 144:ef7eb2e8f9f7 410 * @retval None
<> 144:ef7eb2e8f9f7 411 */
<> 144:ef7eb2e8f9f7 412 void HAL_DBGMCU_DisableDBGSleepMode(void)
<> 144:ef7eb2e8f9f7 413 {
<> 144:ef7eb2e8f9f7 414 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
<> 144:ef7eb2e8f9f7 415 }
<> 144:ef7eb2e8f9f7 416
<> 144:ef7eb2e8f9f7 417 /**
<> 144:ef7eb2e8f9f7 418 * @brief Enables the Debug Module during STOP mode
<> 144:ef7eb2e8f9f7 419 * @retval None
<> 144:ef7eb2e8f9f7 420 */
<> 144:ef7eb2e8f9f7 421 void HAL_DBGMCU_EnableDBGStopMode(void)
<> 144:ef7eb2e8f9f7 422 {
<> 144:ef7eb2e8f9f7 423 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
<> 144:ef7eb2e8f9f7 424 }
<> 144:ef7eb2e8f9f7 425
<> 144:ef7eb2e8f9f7 426 /**
<> 144:ef7eb2e8f9f7 427 * @brief Disables the Debug Module during STOP mode
<> 144:ef7eb2e8f9f7 428 * @retval None
<> 144:ef7eb2e8f9f7 429 */
<> 144:ef7eb2e8f9f7 430 void HAL_DBGMCU_DisableDBGStopMode(void)
<> 144:ef7eb2e8f9f7 431 {
<> 144:ef7eb2e8f9f7 432 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
<> 144:ef7eb2e8f9f7 433 }
<> 144:ef7eb2e8f9f7 434
<> 144:ef7eb2e8f9f7 435 /**
<> 144:ef7eb2e8f9f7 436 * @brief Enables the Debug Module during STANDBY mode
<> 144:ef7eb2e8f9f7 437 * @retval None
<> 144:ef7eb2e8f9f7 438 */
<> 144:ef7eb2e8f9f7 439 void HAL_DBGMCU_EnableDBGStandbyMode(void)
<> 144:ef7eb2e8f9f7 440 {
<> 144:ef7eb2e8f9f7 441 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
<> 144:ef7eb2e8f9f7 442 }
<> 144:ef7eb2e8f9f7 443
<> 144:ef7eb2e8f9f7 444 /**
<> 144:ef7eb2e8f9f7 445 * @brief Disables the Debug Module during STANDBY mode
<> 144:ef7eb2e8f9f7 446 * @retval None
<> 144:ef7eb2e8f9f7 447 */
<> 144:ef7eb2e8f9f7 448 void HAL_DBGMCU_DisableDBGStandbyMode(void)
<> 144:ef7eb2e8f9f7 449 {
<> 144:ef7eb2e8f9f7 450 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
<> 144:ef7eb2e8f9f7 451 }
<> 144:ef7eb2e8f9f7 452
<> 144:ef7eb2e8f9f7 453 /**
<> 144:ef7eb2e8f9f7 454 * @brief Enable low power mode behavior when the MCU is in Debug mode.
<> 144:ef7eb2e8f9f7 455 * @param Periph: specifies the low power mode.
<> 144:ef7eb2e8f9f7 456 * This parameter can be any combination of the following values:
<> 144:ef7eb2e8f9f7 457 * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode
<> 144:ef7eb2e8f9f7 458 * @arg DBGMCU_STOP: Keep debugger connection during STOP mode
<> 144:ef7eb2e8f9f7 459 * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode
<> 144:ef7eb2e8f9f7 460 * @retval None
<> 144:ef7eb2e8f9f7 461 */
<> 144:ef7eb2e8f9f7 462 void HAL_DBGMCU_DBG_EnableLowPowerConfig(uint32_t Periph)
<> 144:ef7eb2e8f9f7 463 {
<> 144:ef7eb2e8f9f7 464 /* Check the parameters */
<> 144:ef7eb2e8f9f7 465 assert_param(IS_DBGMCU_PERIPH(Periph));
<> 144:ef7eb2e8f9f7 466
<> 144:ef7eb2e8f9f7 467 DBGMCU->CR |= Periph;
<> 144:ef7eb2e8f9f7 468
<> 144:ef7eb2e8f9f7 469 }
<> 144:ef7eb2e8f9f7 470 /**
<> 144:ef7eb2e8f9f7 471 * @brief Disable low power mode behavior when the MCU is in Debug mode.
<> 144:ef7eb2e8f9f7 472 * @param Periph: specifies the low power mode.
<> 144:ef7eb2e8f9f7 473 * This parameter can be any combination of the following values:
<> 144:ef7eb2e8f9f7 474 * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode
<> 144:ef7eb2e8f9f7 475 * @arg DBGMCU_STOP: Keep debugger connection during STOP mode
<> 144:ef7eb2e8f9f7 476 * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode
<> 144:ef7eb2e8f9f7 477 * @retval None
<> 144:ef7eb2e8f9f7 478 */
<> 144:ef7eb2e8f9f7 479 void HAL_DBGMCU_DBG_DisableLowPowerConfig(uint32_t Periph)
<> 144:ef7eb2e8f9f7 480 {
<> 144:ef7eb2e8f9f7 481 /* Check the parameters */
<> 144:ef7eb2e8f9f7 482 assert_param(IS_DBGMCU_PERIPH(Periph));
<> 144:ef7eb2e8f9f7 483 {
<> 144:ef7eb2e8f9f7 484 DBGMCU->CR &= ~Periph;
<> 144:ef7eb2e8f9f7 485 }
<> 144:ef7eb2e8f9f7 486 }
<> 144:ef7eb2e8f9f7 487
<> 144:ef7eb2e8f9f7 488 /**
<> 144:ef7eb2e8f9f7 489 * @brief Returns the boot mode as configured by user.
<> 144:ef7eb2e8f9f7 490 * @retval The boot mode as configured by user. The returned value can be one
<> 144:ef7eb2e8f9f7 491 * of the following values:
<> 144:ef7eb2e8f9f7 492 * - 0x00000000 : Boot is configured in Main Flash memory
<> 144:ef7eb2e8f9f7 493 * - 0x00000100 : Boot is configured in System Flash memory
<> 144:ef7eb2e8f9f7 494 * - 0x00000300 : Boot is configured in Embedded SRAM memory
<> 144:ef7eb2e8f9f7 495 */
<> 144:ef7eb2e8f9f7 496 uint32_t HAL_SYSCFG_GetBootMode(void)
<> 144:ef7eb2e8f9f7 497 {
<> 144:ef7eb2e8f9f7 498 return (SYSCFG->CFGR1 & SYSCFG_CFGR1_BOOT_MODE);
<> 144:ef7eb2e8f9f7 499 }
<> 144:ef7eb2e8f9f7 500
<> 144:ef7eb2e8f9f7 501 /**
<> 144:ef7eb2e8f9f7 502 * @brief Selects the output of internal reference voltage (VREFINT).
<> 144:ef7eb2e8f9f7 503 * The VREFINT output can be routed to(PB0) or
<> 144:ef7eb2e8f9f7 504 * (PB1) or both.
<> 144:ef7eb2e8f9f7 505 * @param SYSCFG_Vrefint_OUTPUT: new state of the Vrefint output.
<> 144:ef7eb2e8f9f7 506 * This parameter can be one of the following values:
<> 144:ef7eb2e8f9f7 507 * @arg SYSCFG_VREFINT_OUT_NONE
<> 144:ef7eb2e8f9f7 508 * @arg SYSCFG_VREFINT_OUT_PB0
<> 144:ef7eb2e8f9f7 509 * @arg SYSCFG_VREFINT_OUT_PB1
<> 144:ef7eb2e8f9f7 510 * @arg SYSCFG_VREFINT_OUT_PB0_PB1
<> 144:ef7eb2e8f9f7 511 * @retval None
<> 144:ef7eb2e8f9f7 512 */
<> 144:ef7eb2e8f9f7 513 void HAL_SYSCFG_VREFINT_OutputSelect(uint32_t SYSCFG_Vrefint_OUTPUT)
<> 144:ef7eb2e8f9f7 514 {
<> 144:ef7eb2e8f9f7 515 /* Check the parameters */
<> 144:ef7eb2e8f9f7 516 assert_param(IS_SYSCFG_VREFINT_OUT_SELECT(SYSCFG_Vrefint_OUTPUT));
<> 144:ef7eb2e8f9f7 517
<> 144:ef7eb2e8f9f7 518 /* Set the output Vrefint pin */
<> 144:ef7eb2e8f9f7 519 SYSCFG->CFGR3 &= ~(SYSCFG_CFGR3_VREF_OUT);
<> 144:ef7eb2e8f9f7 520 SYSCFG->CFGR3 |= (uint32_t)(SYSCFG_Vrefint_OUTPUT);
<> 144:ef7eb2e8f9f7 521 }
<> 144:ef7eb2e8f9f7 522
<> 144:ef7eb2e8f9f7 523 /**
<> 144:ef7eb2e8f9f7 524 * @brief Lock the SYSCFG VREF register values
<> 144:ef7eb2e8f9f7 525 * @retval None
<> 144:ef7eb2e8f9f7 526 */
<> 144:ef7eb2e8f9f7 527 void HAL_SYSCFG_Enable_Lock_VREFINT(void)
<> 144:ef7eb2e8f9f7 528 {
<> 144:ef7eb2e8f9f7 529 /* Enable the LOCK by setting REF_LOCK bit in the CFGR3 register */
<> 144:ef7eb2e8f9f7 530 SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK);
<> 144:ef7eb2e8f9f7 531 }
<> 144:ef7eb2e8f9f7 532
<> 144:ef7eb2e8f9f7 533 /**
<> 144:ef7eb2e8f9f7 534 * @brief Unlock the overall SYSCFG VREF register values
<> 144:ef7eb2e8f9f7 535 * @retval None
<> 144:ef7eb2e8f9f7 536 */
<> 144:ef7eb2e8f9f7 537 void HAL_SYSCFG_Disable_Lock_VREFINT(void)
<> 144:ef7eb2e8f9f7 538 {
<> 144:ef7eb2e8f9f7 539 /* Disable the LOCK by setting REF_LOCK bit in the CFGR3 register */
<> 144:ef7eb2e8f9f7 540 CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK);
<> 144:ef7eb2e8f9f7 541 }
<> 144:ef7eb2e8f9f7 542
<> 144:ef7eb2e8f9f7 543 /**
<> 144:ef7eb2e8f9f7 544 * @}
<> 144:ef7eb2e8f9f7 545 */
<> 144:ef7eb2e8f9f7 546
<> 144:ef7eb2e8f9f7 547 /**
<> 144:ef7eb2e8f9f7 548 * @}
<> 144:ef7eb2e8f9f7 549 */
<> 144:ef7eb2e8f9f7 550
<> 144:ef7eb2e8f9f7 551 /**
<> 144:ef7eb2e8f9f7 552 * @}
<> 144:ef7eb2e8f9f7 553 */
<> 144:ef7eb2e8f9f7 554 #endif /* HAL_MODULE_ENABLED */
<> 144:ef7eb2e8f9f7 555 /**
<> 144:ef7eb2e8f9f7 556 * @}
<> 144:ef7eb2e8f9f7 557 */
<> 144:ef7eb2e8f9f7 558
<> 144:ef7eb2e8f9f7 559 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
<> 144:ef7eb2e8f9f7 560