mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
489:119543c9f674
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

Full URL: https://github.com/mbedmicro/mbed/commit/d5b4d2ab9c47edb4dc5776e7177b0c2263459081/

Initial version of drivers for SAMR21

Who changed what in which revision?

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