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:
Mon Sep 28 20:15:09 2015 +0100
Revision:
634:ac7d6880524d
Parent:
632:7687fb9c4f91
Synchronized with git revision 9b7d23d47153c298a6d24de9a415202705889d11

Full URL: https://github.com/mbedmicro/mbed/commit/9b7d23d47153c298a6d24de9a415202705889d11/

Revert "[NUCLEO_F303K8] add support of the STM32F303K8"

Who changed what in which revision?

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