mbed library sources

Dependents:   Marvino mbot

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

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

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 632:7687fb9c4f91 5 * @version V1.1.1
mbed_official 632:7687fb9c4f91 6 * @date 19-June-2015
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 632:7687fb9c4f91 26 * <h2><center>&copy; COPYRIGHT(c) 2015 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 632:7687fb9c4f91 73 * @brief STM32F3xx HAL Driver version number V1.1.1
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 632:7687fb9c4f91 77 #define __STM32F3xx_HAL_VERSION_SUB2 (0x01) /*!< [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****/