Aditya Mehrotra / mbed-dev

Dependents:   CAN_TEST SPIne_Plus_DYNO_SENSORS SPIne_Plus_v2 SPIne_Plus_Dyno_v2

Committer:
saloutos
Date:
Thu Nov 26 04:08:56 2020 +0000
Revision:
0:083111ae2a11
first commit of leaned mbed dev lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
saloutos 0:083111ae2a11 1 /**
saloutos 0:083111ae2a11 2 ******************************************************************************
saloutos 0:083111ae2a11 3 * @file stm32f7xx_hal.c
saloutos 0:083111ae2a11 4 * @author MCD Application Team
saloutos 0:083111ae2a11 5 * @version V1.2.2
saloutos 0:083111ae2a11 6 * @date 14-April-2017
saloutos 0:083111ae2a11 7 * @brief HAL module driver.
saloutos 0:083111ae2a11 8 * This is the common part of the HAL initialization
saloutos 0:083111ae2a11 9 *
saloutos 0:083111ae2a11 10 @verbatim
saloutos 0:083111ae2a11 11 ==============================================================================
saloutos 0:083111ae2a11 12 ##### How to use this driver #####
saloutos 0:083111ae2a11 13 ==============================================================================
saloutos 0:083111ae2a11 14 [..]
saloutos 0:083111ae2a11 15 The common HAL driver contains a set of generic and common APIs that can be
saloutos 0:083111ae2a11 16 used by the PPP peripheral drivers and the user to start using the HAL.
saloutos 0:083111ae2a11 17 [..]
saloutos 0:083111ae2a11 18 The HAL contains two APIs' categories:
saloutos 0:083111ae2a11 19 (+) Common HAL APIs
saloutos 0:083111ae2a11 20 (+) Services HAL APIs
saloutos 0:083111ae2a11 21
saloutos 0:083111ae2a11 22 @endverbatim
saloutos 0:083111ae2a11 23 ******************************************************************************
saloutos 0:083111ae2a11 24 * @attention
saloutos 0:083111ae2a11 25 *
saloutos 0:083111ae2a11 26 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
saloutos 0:083111ae2a11 27 *
saloutos 0:083111ae2a11 28 * Redistribution and use in source and binary forms, with or without modification,
saloutos 0:083111ae2a11 29 * are permitted provided that the following conditions are met:
saloutos 0:083111ae2a11 30 * 1. Redistributions of source code must retain the above copyright notice,
saloutos 0:083111ae2a11 31 * this list of conditions and the following disclaimer.
saloutos 0:083111ae2a11 32 * 2. Redistributions in binary form must reproduce the above copyright notice,
saloutos 0:083111ae2a11 33 * this list of conditions and the following disclaimer in the documentation
saloutos 0:083111ae2a11 34 * and/or other materials provided with the distribution.
saloutos 0:083111ae2a11 35 * 3. Neither the name of STMicroelectronics nor the names of its contributors
saloutos 0:083111ae2a11 36 * may be used to endorse or promote products derived from this software
saloutos 0:083111ae2a11 37 * without specific prior written permission.
saloutos 0:083111ae2a11 38 *
saloutos 0:083111ae2a11 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
saloutos 0:083111ae2a11 40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
saloutos 0:083111ae2a11 41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
saloutos 0:083111ae2a11 42 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
saloutos 0:083111ae2a11 43 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
saloutos 0:083111ae2a11 44 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
saloutos 0:083111ae2a11 45 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
saloutos 0:083111ae2a11 46 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
saloutos 0:083111ae2a11 47 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
saloutos 0:083111ae2a11 48 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
saloutos 0:083111ae2a11 49 *
saloutos 0:083111ae2a11 50 ******************************************************************************
saloutos 0:083111ae2a11 51 */
saloutos 0:083111ae2a11 52
saloutos 0:083111ae2a11 53 /* Includes ------------------------------------------------------------------*/
saloutos 0:083111ae2a11 54 #include "stm32f7xx_hal.h"
saloutos 0:083111ae2a11 55
saloutos 0:083111ae2a11 56 /** @addtogroup STM32F7xx_HAL_Driver
saloutos 0:083111ae2a11 57 * @{
saloutos 0:083111ae2a11 58 */
saloutos 0:083111ae2a11 59
saloutos 0:083111ae2a11 60 /** @defgroup HAL HAL
saloutos 0:083111ae2a11 61 * @brief HAL module driver.
saloutos 0:083111ae2a11 62 * @{
saloutos 0:083111ae2a11 63 */
saloutos 0:083111ae2a11 64
saloutos 0:083111ae2a11 65 /* Private typedef -----------------------------------------------------------*/
saloutos 0:083111ae2a11 66 /* Private define ------------------------------------------------------------*/
saloutos 0:083111ae2a11 67 /** @addtogroup HAL_Private_Constants
saloutos 0:083111ae2a11 68 * @{
saloutos 0:083111ae2a11 69 */
saloutos 0:083111ae2a11 70 /**
saloutos 0:083111ae2a11 71 * @brief STM32F7xx HAL Driver version number V1.2.2
saloutos 0:083111ae2a11 72 */
saloutos 0:083111ae2a11 73 #define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
saloutos 0:083111ae2a11 74 #define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
saloutos 0:083111ae2a11 75 #define __STM32F7xx_HAL_VERSION_SUB2 (0x02) /*!< [15:8] sub2 version */
saloutos 0:083111ae2a11 76 #define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
saloutos 0:083111ae2a11 77 #define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
saloutos 0:083111ae2a11 78 |(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
saloutos 0:083111ae2a11 79 |(__STM32F7xx_HAL_VERSION_SUB2 << 8 )\
saloutos 0:083111ae2a11 80 |(__STM32F7xx_HAL_VERSION_RC))
saloutos 0:083111ae2a11 81
saloutos 0:083111ae2a11 82 #define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF)
saloutos 0:083111ae2a11 83 /**
saloutos 0:083111ae2a11 84 * @}
saloutos 0:083111ae2a11 85 */
saloutos 0:083111ae2a11 86
saloutos 0:083111ae2a11 87 /* Private macro -------------------------------------------------------------*/
saloutos 0:083111ae2a11 88 /* Private variables ---------------------------------------------------------*/
saloutos 0:083111ae2a11 89 /** @addtogroup HAL_Private_Variables
saloutos 0:083111ae2a11 90 * @{
saloutos 0:083111ae2a11 91 */
saloutos 0:083111ae2a11 92 __IO uint32_t uwTick;
saloutos 0:083111ae2a11 93 /**
saloutos 0:083111ae2a11 94 * @}
saloutos 0:083111ae2a11 95 */
saloutos 0:083111ae2a11 96
saloutos 0:083111ae2a11 97 /* Private function prototypes -----------------------------------------------*/
saloutos 0:083111ae2a11 98 /* Private functions ---------------------------------------------------------*/
saloutos 0:083111ae2a11 99
saloutos 0:083111ae2a11 100 /** @defgroup HAL_Exported_Functions HAL Exported Functions
saloutos 0:083111ae2a11 101 * @{
saloutos 0:083111ae2a11 102 */
saloutos 0:083111ae2a11 103
saloutos 0:083111ae2a11 104 /** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions
saloutos 0:083111ae2a11 105 * @brief Initialization and de-initialization functions
saloutos 0:083111ae2a11 106 *
saloutos 0:083111ae2a11 107 @verbatim
saloutos 0:083111ae2a11 108 ===============================================================================
saloutos 0:083111ae2a11 109 ##### Initialization and de-initialization functions #####
saloutos 0:083111ae2a11 110 ===============================================================================
saloutos 0:083111ae2a11 111 [..] This section provides functions allowing to:
saloutos 0:083111ae2a11 112 (+) Initializes the Flash interface the NVIC allocation and initial clock
saloutos 0:083111ae2a11 113 configuration. It initializes the systick also when timeout is needed
saloutos 0:083111ae2a11 114 and the backup domain when enabled.
saloutos 0:083111ae2a11 115 (+) de-Initializes common part of the HAL
saloutos 0:083111ae2a11 116 (+) Configure The time base source to have 1ms time base with a dedicated
saloutos 0:083111ae2a11 117 Tick interrupt priority.
saloutos 0:083111ae2a11 118 (++) Systick timer is used by default as source of time base, but user
saloutos 0:083111ae2a11 119 can eventually implement his proper time base source (a general purpose
saloutos 0:083111ae2a11 120 timer for example or other time source), keeping in mind that Time base
saloutos 0:083111ae2a11 121 duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
saloutos 0:083111ae2a11 122 handled in milliseconds basis.
saloutos 0:083111ae2a11 123 (++) Time base configuration function (HAL_InitTick ()) is called automatically
saloutos 0:083111ae2a11 124 at the beginning of the program after reset by HAL_Init() or at any time
saloutos 0:083111ae2a11 125 when clock is configured, by HAL_RCC_ClockConfig().
saloutos 0:083111ae2a11 126 (++) Source of time base is configured to generate interrupts at regular
saloutos 0:083111ae2a11 127 time intervals. Care must be taken if HAL_Delay() is called from a
saloutos 0:083111ae2a11 128 peripheral ISR process, the Tick interrupt line must have higher priority
saloutos 0:083111ae2a11 129 (numerically lower) than the peripheral interrupt. Otherwise the caller
saloutos 0:083111ae2a11 130 ISR process will be blocked.
saloutos 0:083111ae2a11 131 (++) functions affecting time base configurations are declared as __weak
saloutos 0:083111ae2a11 132 to make override possible in case of other implementations in user file.
saloutos 0:083111ae2a11 133 @endverbatim
saloutos 0:083111ae2a11 134 * @{
saloutos 0:083111ae2a11 135 */
saloutos 0:083111ae2a11 136
saloutos 0:083111ae2a11 137 /**
saloutos 0:083111ae2a11 138 * @brief This function is used to initialize the HAL Library; it must be the first
saloutos 0:083111ae2a11 139 * instruction to be executed in the main program (before to call any other
saloutos 0:083111ae2a11 140 * HAL function), it performs the following:
saloutos 0:083111ae2a11 141 * Configure the Flash prefetch, and instruction cache through ART accelerator.
saloutos 0:083111ae2a11 142 * Configures the SysTick to generate an interrupt each 1 millisecond,
saloutos 0:083111ae2a11 143 * which is clocked by the HSI (at this stage, the clock is not yet
saloutos 0:083111ae2a11 144 * configured and thus the system is running from the internal HSI at 16 MHz).
saloutos 0:083111ae2a11 145 * Set NVIC Group Priority to 4.
saloutos 0:083111ae2a11 146 * Calls the HAL_MspInit() callback function defined in user file
saloutos 0:083111ae2a11 147 * "stm32f7xx_hal_msp.c" to do the global low level hardware initialization
saloutos 0:083111ae2a11 148 *
saloutos 0:083111ae2a11 149 * @note SysTick is used as time base for the HAL_Delay() function, the application
saloutos 0:083111ae2a11 150 * need to ensure that the SysTick time base is always set to 1 millisecond
saloutos 0:083111ae2a11 151 * to have correct HAL operation.
saloutos 0:083111ae2a11 152 * @retval HAL status
saloutos 0:083111ae2a11 153 */
saloutos 0:083111ae2a11 154 HAL_StatusTypeDef HAL_Init(void)
saloutos 0:083111ae2a11 155 {
saloutos 0:083111ae2a11 156 /* Configure Flash prefetch and Instruction cache through ART accelerator */
saloutos 0:083111ae2a11 157 #if (ART_ACCLERATOR_ENABLE != 0)
saloutos 0:083111ae2a11 158 __HAL_FLASH_ART_ENABLE();
saloutos 0:083111ae2a11 159 #endif /* ART_ACCLERATOR_ENABLE */
saloutos 0:083111ae2a11 160
saloutos 0:083111ae2a11 161 /* Set Interrupt Group Priority */
saloutos 0:083111ae2a11 162 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
saloutos 0:083111ae2a11 163
saloutos 0:083111ae2a11 164 /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
saloutos 0:083111ae2a11 165 HAL_InitTick(TICK_INT_PRIORITY);
saloutos 0:083111ae2a11 166
saloutos 0:083111ae2a11 167 /* Init the low level hardware */
saloutos 0:083111ae2a11 168 HAL_MspInit();
saloutos 0:083111ae2a11 169
saloutos 0:083111ae2a11 170 /* Return function status */
saloutos 0:083111ae2a11 171 return HAL_OK;
saloutos 0:083111ae2a11 172 }
saloutos 0:083111ae2a11 173
saloutos 0:083111ae2a11 174 /**
saloutos 0:083111ae2a11 175 * @brief This function de-Initializes common part of the HAL and stops the systick.
saloutos 0:083111ae2a11 176 * This function is optional.
saloutos 0:083111ae2a11 177 * @retval HAL status
saloutos 0:083111ae2a11 178 */
saloutos 0:083111ae2a11 179 HAL_StatusTypeDef HAL_DeInit(void)
saloutos 0:083111ae2a11 180 {
saloutos 0:083111ae2a11 181 /* Reset of all peripherals */
saloutos 0:083111ae2a11 182 __HAL_RCC_APB1_FORCE_RESET();
saloutos 0:083111ae2a11 183 __HAL_RCC_APB1_RELEASE_RESET();
saloutos 0:083111ae2a11 184
saloutos 0:083111ae2a11 185 __HAL_RCC_APB2_FORCE_RESET();
saloutos 0:083111ae2a11 186 __HAL_RCC_APB2_RELEASE_RESET();
saloutos 0:083111ae2a11 187
saloutos 0:083111ae2a11 188 __HAL_RCC_AHB1_FORCE_RESET();
saloutos 0:083111ae2a11 189 __HAL_RCC_AHB1_RELEASE_RESET();
saloutos 0:083111ae2a11 190
saloutos 0:083111ae2a11 191 __HAL_RCC_AHB2_FORCE_RESET();
saloutos 0:083111ae2a11 192 __HAL_RCC_AHB2_RELEASE_RESET();
saloutos 0:083111ae2a11 193
saloutos 0:083111ae2a11 194 __HAL_RCC_AHB3_FORCE_RESET();
saloutos 0:083111ae2a11 195 __HAL_RCC_AHB3_RELEASE_RESET();
saloutos 0:083111ae2a11 196
saloutos 0:083111ae2a11 197 /* De-Init the low level hardware */
saloutos 0:083111ae2a11 198 HAL_MspDeInit();
saloutos 0:083111ae2a11 199
saloutos 0:083111ae2a11 200 /* Return function status */
saloutos 0:083111ae2a11 201 return HAL_OK;
saloutos 0:083111ae2a11 202 }
saloutos 0:083111ae2a11 203
saloutos 0:083111ae2a11 204 /**
saloutos 0:083111ae2a11 205 * @brief Initializes the MSP.
saloutos 0:083111ae2a11 206 * @retval None
saloutos 0:083111ae2a11 207 */
saloutos 0:083111ae2a11 208 __weak void HAL_MspInit(void)
saloutos 0:083111ae2a11 209 {
saloutos 0:083111ae2a11 210 /* NOTE : This function Should not be modified, when the callback is needed,
saloutos 0:083111ae2a11 211 the HAL_MspInit could be implemented in the user file
saloutos 0:083111ae2a11 212 */
saloutos 0:083111ae2a11 213 }
saloutos 0:083111ae2a11 214
saloutos 0:083111ae2a11 215 /**
saloutos 0:083111ae2a11 216 * @brief DeInitializes the MSP.
saloutos 0:083111ae2a11 217 * @retval None
saloutos 0:083111ae2a11 218 */
saloutos 0:083111ae2a11 219 __weak void HAL_MspDeInit(void)
saloutos 0:083111ae2a11 220 {
saloutos 0:083111ae2a11 221 /* NOTE : This function Should not be modified, when the callback is needed,
saloutos 0:083111ae2a11 222 the HAL_MspDeInit could be implemented in the user file
saloutos 0:083111ae2a11 223 */
saloutos 0:083111ae2a11 224 }
saloutos 0:083111ae2a11 225
saloutos 0:083111ae2a11 226 /**
saloutos 0:083111ae2a11 227 * @brief This function configures the source of the time base.
saloutos 0:083111ae2a11 228 * The time source is configured to have 1ms time base with a dedicated
saloutos 0:083111ae2a11 229 * Tick interrupt priority.
saloutos 0:083111ae2a11 230 * @note This function is called automatically at the beginning of program after
saloutos 0:083111ae2a11 231 * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig().
saloutos 0:083111ae2a11 232 * @note In the default implementation, SysTick timer is the source of time base.
saloutos 0:083111ae2a11 233 * It is used to generate interrupts at regular time intervals.
saloutos 0:083111ae2a11 234 * Care must be taken if HAL_Delay() is called from a peripheral ISR process,
saloutos 0:083111ae2a11 235 * The the SysTick interrupt must have higher priority (numerically lower)
saloutos 0:083111ae2a11 236 * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
saloutos 0:083111ae2a11 237 * The function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 238 * implementation in user file.
saloutos 0:083111ae2a11 239 * @param TickPriority: Tick interrupt priority.
saloutos 0:083111ae2a11 240 * @retval HAL status
saloutos 0:083111ae2a11 241 */
saloutos 0:083111ae2a11 242 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
saloutos 0:083111ae2a11 243 {
saloutos 0:083111ae2a11 244 /*Configure the SysTick to have interrupt in 1ms time basis*/
saloutos 0:083111ae2a11 245 HAL_SYSTICK_Config(SystemCoreClock/1000);
saloutos 0:083111ae2a11 246
saloutos 0:083111ae2a11 247 /*Configure the SysTick IRQ priority */
saloutos 0:083111ae2a11 248 HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);
saloutos 0:083111ae2a11 249
saloutos 0:083111ae2a11 250 /* Return function status */
saloutos 0:083111ae2a11 251 return HAL_OK;
saloutos 0:083111ae2a11 252 }
saloutos 0:083111ae2a11 253
saloutos 0:083111ae2a11 254 /**
saloutos 0:083111ae2a11 255 * @}
saloutos 0:083111ae2a11 256 */
saloutos 0:083111ae2a11 257
saloutos 0:083111ae2a11 258 /** @defgroup HAL_Exported_Functions_Group2 HAL Control functions
saloutos 0:083111ae2a11 259 * @brief HAL Control functions
saloutos 0:083111ae2a11 260 *
saloutos 0:083111ae2a11 261 @verbatim
saloutos 0:083111ae2a11 262 ===============================================================================
saloutos 0:083111ae2a11 263 ##### HAL Control functions #####
saloutos 0:083111ae2a11 264 ===============================================================================
saloutos 0:083111ae2a11 265 [..] This section provides functions allowing to:
saloutos 0:083111ae2a11 266 (+) Provide a tick value in millisecond
saloutos 0:083111ae2a11 267 (+) Provide a blocking delay in millisecond
saloutos 0:083111ae2a11 268 (+) Suspend the time base source interrupt
saloutos 0:083111ae2a11 269 (+) Resume the time base source interrupt
saloutos 0:083111ae2a11 270 (+) Get the HAL API driver version
saloutos 0:083111ae2a11 271 (+) Get the device identifier
saloutos 0:083111ae2a11 272 (+) Get the device revision identifier
saloutos 0:083111ae2a11 273 (+) Enable/Disable Debug module during SLEEP mode
saloutos 0:083111ae2a11 274 (+) Enable/Disable Debug module during STOP mode
saloutos 0:083111ae2a11 275 (+) Enable/Disable Debug module during STANDBY mode
saloutos 0:083111ae2a11 276
saloutos 0:083111ae2a11 277 @endverbatim
saloutos 0:083111ae2a11 278 * @{
saloutos 0:083111ae2a11 279 */
saloutos 0:083111ae2a11 280
saloutos 0:083111ae2a11 281 /**
saloutos 0:083111ae2a11 282 * @brief This function is called to increment a global variable "uwTick"
saloutos 0:083111ae2a11 283 * used as application time base.
saloutos 0:083111ae2a11 284 * @note In the default implementation, this variable is incremented each 1ms
saloutos 0:083111ae2a11 285 * in Systick ISR.
saloutos 0:083111ae2a11 286 * @note This function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 287 * implementations in user file.
saloutos 0:083111ae2a11 288 * @retval None
saloutos 0:083111ae2a11 289 */
saloutos 0:083111ae2a11 290 __weak void HAL_IncTick(void)
saloutos 0:083111ae2a11 291 {
saloutos 0:083111ae2a11 292 uwTick++;
saloutos 0:083111ae2a11 293 }
saloutos 0:083111ae2a11 294
saloutos 0:083111ae2a11 295 /**
saloutos 0:083111ae2a11 296 * @brief Provides a tick value in millisecond.
saloutos 0:083111ae2a11 297 * @note This function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 298 * implementations in user file.
saloutos 0:083111ae2a11 299 * @retval tick value
saloutos 0:083111ae2a11 300 */
saloutos 0:083111ae2a11 301 __weak uint32_t HAL_GetTick(void)
saloutos 0:083111ae2a11 302 {
saloutos 0:083111ae2a11 303 return uwTick;
saloutos 0:083111ae2a11 304 }
saloutos 0:083111ae2a11 305
saloutos 0:083111ae2a11 306 /**
saloutos 0:083111ae2a11 307 * @brief This function provides accurate delay (in milliseconds) based
saloutos 0:083111ae2a11 308 * on variable incremented.
saloutos 0:083111ae2a11 309 * @note In the default implementation , SysTick timer is the source of time base.
saloutos 0:083111ae2a11 310 * It is used to generate interrupts at regular time intervals where uwTick
saloutos 0:083111ae2a11 311 * is incremented.
saloutos 0:083111ae2a11 312 * @note This function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 313 * implementations in user file.
saloutos 0:083111ae2a11 314 * @param Delay: specifies the delay time length, in milliseconds.
saloutos 0:083111ae2a11 315 * @retval None
saloutos 0:083111ae2a11 316 */
saloutos 0:083111ae2a11 317 __weak void HAL_Delay(__IO uint32_t Delay)
saloutos 0:083111ae2a11 318 {
saloutos 0:083111ae2a11 319 uint32_t tickstart = 0;
saloutos 0:083111ae2a11 320 tickstart = HAL_GetTick();
saloutos 0:083111ae2a11 321 while((HAL_GetTick() - tickstart) < Delay)
saloutos 0:083111ae2a11 322 {
saloutos 0:083111ae2a11 323 }
saloutos 0:083111ae2a11 324 }
saloutos 0:083111ae2a11 325
saloutos 0:083111ae2a11 326 /**
saloutos 0:083111ae2a11 327 * @brief Suspend Tick increment.
saloutos 0:083111ae2a11 328 * @note In the default implementation , SysTick timer is the source of time base. It is
saloutos 0:083111ae2a11 329 * used to generate interrupts at regular time intervals. Once HAL_SuspendTick()
saloutos 0:083111ae2a11 330 * is called, the SysTick interrupt will be disabled and so Tick increment
saloutos 0:083111ae2a11 331 * is suspended.
saloutos 0:083111ae2a11 332 * @note This function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 333 * implementations in user file.
saloutos 0:083111ae2a11 334 * @retval None
saloutos 0:083111ae2a11 335 */
saloutos 0:083111ae2a11 336 __weak void HAL_SuspendTick(void)
saloutos 0:083111ae2a11 337 {
saloutos 0:083111ae2a11 338 /* Disable SysTick Interrupt */
saloutos 0:083111ae2a11 339 SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
saloutos 0:083111ae2a11 340 }
saloutos 0:083111ae2a11 341
saloutos 0:083111ae2a11 342 /**
saloutos 0:083111ae2a11 343 * @brief Resume Tick increment.
saloutos 0:083111ae2a11 344 * @note In the default implementation , SysTick timer is the source of time base. It is
saloutos 0:083111ae2a11 345 * used to generate interrupts at regular time intervals. Once HAL_ResumeTick()
saloutos 0:083111ae2a11 346 * is called, the SysTick interrupt will be enabled and so Tick increment
saloutos 0:083111ae2a11 347 * is resumed.
saloutos 0:083111ae2a11 348 * @note This function is declared as __weak to be overwritten in case of other
saloutos 0:083111ae2a11 349 * implementations in user file.
saloutos 0:083111ae2a11 350 * @retval None
saloutos 0:083111ae2a11 351 */
saloutos 0:083111ae2a11 352 __weak void HAL_ResumeTick(void)
saloutos 0:083111ae2a11 353 {
saloutos 0:083111ae2a11 354 /* Enable SysTick Interrupt */
saloutos 0:083111ae2a11 355 SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
saloutos 0:083111ae2a11 356 }
saloutos 0:083111ae2a11 357
saloutos 0:083111ae2a11 358 /**
saloutos 0:083111ae2a11 359 * @brief Returns the HAL revision
saloutos 0:083111ae2a11 360 * @retval version : 0xXYZR (8bits for each decimal, R for RC)
saloutos 0:083111ae2a11 361 */
saloutos 0:083111ae2a11 362 uint32_t HAL_GetHalVersion(void)
saloutos 0:083111ae2a11 363 {
saloutos 0:083111ae2a11 364 return __STM32F7xx_HAL_VERSION;
saloutos 0:083111ae2a11 365 }
saloutos 0:083111ae2a11 366
saloutos 0:083111ae2a11 367 /**
saloutos 0:083111ae2a11 368 * @brief Returns the device revision identifier.
saloutos 0:083111ae2a11 369 * @retval Device revision identifier
saloutos 0:083111ae2a11 370 */
saloutos 0:083111ae2a11 371 uint32_t HAL_GetREVID(void)
saloutos 0:083111ae2a11 372 {
saloutos 0:083111ae2a11 373 return((DBGMCU->IDCODE) >> 16U);
saloutos 0:083111ae2a11 374 }
saloutos 0:083111ae2a11 375
saloutos 0:083111ae2a11 376 /**
saloutos 0:083111ae2a11 377 * @brief Returns the device identifier.
saloutos 0:083111ae2a11 378 * @retval Device identifier
saloutos 0:083111ae2a11 379 */
saloutos 0:083111ae2a11 380 uint32_t HAL_GetDEVID(void)
saloutos 0:083111ae2a11 381 {
saloutos 0:083111ae2a11 382 return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);
saloutos 0:083111ae2a11 383 }
saloutos 0:083111ae2a11 384
saloutos 0:083111ae2a11 385 /**
saloutos 0:083111ae2a11 386 * @brief Enable the Debug Module during SLEEP mode
saloutos 0:083111ae2a11 387 * @retval None
saloutos 0:083111ae2a11 388 */
saloutos 0:083111ae2a11 389 void HAL_DBGMCU_EnableDBGSleepMode(void)
saloutos 0:083111ae2a11 390 {
saloutos 0:083111ae2a11 391 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
saloutos 0:083111ae2a11 392 }
saloutos 0:083111ae2a11 393
saloutos 0:083111ae2a11 394 /**
saloutos 0:083111ae2a11 395 * @brief Disable the Debug Module during SLEEP mode
saloutos 0:083111ae2a11 396 * @retval None
saloutos 0:083111ae2a11 397 */
saloutos 0:083111ae2a11 398 void HAL_DBGMCU_DisableDBGSleepMode(void)
saloutos 0:083111ae2a11 399 {
saloutos 0:083111ae2a11 400 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
saloutos 0:083111ae2a11 401 }
saloutos 0:083111ae2a11 402
saloutos 0:083111ae2a11 403 /**
saloutos 0:083111ae2a11 404 * @brief Enable the Debug Module during STOP mode
saloutos 0:083111ae2a11 405 * @retval None
saloutos 0:083111ae2a11 406 */
saloutos 0:083111ae2a11 407 void HAL_DBGMCU_EnableDBGStopMode(void)
saloutos 0:083111ae2a11 408 {
saloutos 0:083111ae2a11 409 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
saloutos 0:083111ae2a11 410 }
saloutos 0:083111ae2a11 411
saloutos 0:083111ae2a11 412 /**
saloutos 0:083111ae2a11 413 * @brief Disable the Debug Module during STOP mode
saloutos 0:083111ae2a11 414 * @retval None
saloutos 0:083111ae2a11 415 */
saloutos 0:083111ae2a11 416 void HAL_DBGMCU_DisableDBGStopMode(void)
saloutos 0:083111ae2a11 417 {
saloutos 0:083111ae2a11 418 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
saloutos 0:083111ae2a11 419 }
saloutos 0:083111ae2a11 420
saloutos 0:083111ae2a11 421 /**
saloutos 0:083111ae2a11 422 * @brief Enable the Debug Module during STANDBY mode
saloutos 0:083111ae2a11 423 * @retval None
saloutos 0:083111ae2a11 424 */
saloutos 0:083111ae2a11 425 void HAL_DBGMCU_EnableDBGStandbyMode(void)
saloutos 0:083111ae2a11 426 {
saloutos 0:083111ae2a11 427 SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
saloutos 0:083111ae2a11 428 }
saloutos 0:083111ae2a11 429
saloutos 0:083111ae2a11 430 /**
saloutos 0:083111ae2a11 431 * @brief Disable the Debug Module during STANDBY mode
saloutos 0:083111ae2a11 432 * @retval None
saloutos 0:083111ae2a11 433 */
saloutos 0:083111ae2a11 434 void HAL_DBGMCU_DisableDBGStandbyMode(void)
saloutos 0:083111ae2a11 435 {
saloutos 0:083111ae2a11 436 CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
saloutos 0:083111ae2a11 437 }
saloutos 0:083111ae2a11 438
saloutos 0:083111ae2a11 439 /**
saloutos 0:083111ae2a11 440 * @brief Enables the I/O Compensation Cell.
saloutos 0:083111ae2a11 441 * @note The I/O compensation cell can be used only when the device supply
saloutos 0:083111ae2a11 442 * voltage ranges from 2.4 to 3.6 V.
saloutos 0:083111ae2a11 443 * @retval None
saloutos 0:083111ae2a11 444 */
saloutos 0:083111ae2a11 445 void HAL_EnableCompensationCell(void)
saloutos 0:083111ae2a11 446 {
saloutos 0:083111ae2a11 447 SYSCFG->CMPCR |= SYSCFG_CMPCR_CMP_PD;
saloutos 0:083111ae2a11 448 }
saloutos 0:083111ae2a11 449
saloutos 0:083111ae2a11 450 /**
saloutos 0:083111ae2a11 451 * @brief Power-down the I/O Compensation Cell.
saloutos 0:083111ae2a11 452 * @note The I/O compensation cell can be used only when the device supply
saloutos 0:083111ae2a11 453 * voltage ranges from 2.4 to 3.6 V.
saloutos 0:083111ae2a11 454 * @retval None
saloutos 0:083111ae2a11 455 */
saloutos 0:083111ae2a11 456 void HAL_DisableCompensationCell(void)
saloutos 0:083111ae2a11 457 {
saloutos 0:083111ae2a11 458 SYSCFG->CMPCR &= (uint32_t)~((uint32_t)SYSCFG_CMPCR_CMP_PD);
saloutos 0:083111ae2a11 459 }
saloutos 0:083111ae2a11 460
saloutos 0:083111ae2a11 461 /**
saloutos 0:083111ae2a11 462 * @brief Enables the FMC Memory Mapping Swapping.
saloutos 0:083111ae2a11 463 *
saloutos 0:083111ae2a11 464 * @note SDRAM is accessible at 0x60000000
saloutos 0:083111ae2a11 465 * and NOR/RAM is accessible at 0xC0000000
saloutos 0:083111ae2a11 466 *
saloutos 0:083111ae2a11 467 * @retval None
saloutos 0:083111ae2a11 468 */
saloutos 0:083111ae2a11 469 void HAL_EnableFMCMemorySwapping(void)
saloutos 0:083111ae2a11 470 {
saloutos 0:083111ae2a11 471 SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0;
saloutos 0:083111ae2a11 472 }
saloutos 0:083111ae2a11 473
saloutos 0:083111ae2a11 474 /**
saloutos 0:083111ae2a11 475 * @brief Disables the FMC Memory Mapping Swapping
saloutos 0:083111ae2a11 476 *
saloutos 0:083111ae2a11 477 * @note SDRAM is accessible at 0xC0000000 (default mapping)
saloutos 0:083111ae2a11 478 * and NOR/RAM is accessible at 0x60000000 (default mapping)
saloutos 0:083111ae2a11 479 *
saloutos 0:083111ae2a11 480 * @retval None
saloutos 0:083111ae2a11 481 */
saloutos 0:083111ae2a11 482 void HAL_DisableFMCMemorySwapping(void)
saloutos 0:083111ae2a11 483 {
saloutos 0:083111ae2a11 484
saloutos 0:083111ae2a11 485 SYSCFG->MEMRMP &= (uint32_t)~((uint32_t)SYSCFG_MEMRMP_SWP_FMC);
saloutos 0:083111ae2a11 486 }
saloutos 0:083111ae2a11 487
saloutos 0:083111ae2a11 488 #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
saloutos 0:083111ae2a11 489 /**
saloutos 0:083111ae2a11 490 * @brief Enable the Internal FLASH Bank Swapping.
saloutos 0:083111ae2a11 491 *
saloutos 0:083111ae2a11 492 * @note This function can be used only for STM32F77xx/STM32F76xx devices.
saloutos 0:083111ae2a11 493 *
saloutos 0:083111ae2a11 494 * @note Flash Bank2 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM))
saloutos 0:083111ae2a11 495 * and Flash Bank1 mapped at 0x08100000 (AXI) (aliased at 0x00300000 (TCM))
saloutos 0:083111ae2a11 496 *
saloutos 0:083111ae2a11 497 * @retval None
saloutos 0:083111ae2a11 498 */
saloutos 0:083111ae2a11 499 void HAL_EnableMemorySwappingBank(void)
saloutos 0:083111ae2a11 500 {
saloutos 0:083111ae2a11 501 SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB);
saloutos 0:083111ae2a11 502 }
saloutos 0:083111ae2a11 503
saloutos 0:083111ae2a11 504 /**
saloutos 0:083111ae2a11 505 * @brief Disable the Internal FLASH Bank Swapping.
saloutos 0:083111ae2a11 506 *
saloutos 0:083111ae2a11 507 * @note This function can be used only for STM32F77xx/STM32F76xx devices.
saloutos 0:083111ae2a11 508 *
saloutos 0:083111ae2a11 509 * @note The default state : Flash Bank1 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM))
saloutos 0:083111ae2a11 510 * and Flash Bank2 mapped at 0x08100000 (AXI)( aliased at 0x00300000 (TCM))
saloutos 0:083111ae2a11 511 *
saloutos 0:083111ae2a11 512 * @retval None
saloutos 0:083111ae2a11 513 */
saloutos 0:083111ae2a11 514 void HAL_DisableMemorySwappingBank(void)
saloutos 0:083111ae2a11 515 {
saloutos 0:083111ae2a11 516 CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB);
saloutos 0:083111ae2a11 517 }
saloutos 0:083111ae2a11 518 #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
saloutos 0:083111ae2a11 519
saloutos 0:083111ae2a11 520 /**
saloutos 0:083111ae2a11 521 * @}
saloutos 0:083111ae2a11 522 */
saloutos 0:083111ae2a11 523
saloutos 0:083111ae2a11 524 /**
saloutos 0:083111ae2a11 525 * @}
saloutos 0:083111ae2a11 526 */
saloutos 0:083111ae2a11 527
saloutos 0:083111ae2a11 528 /**
saloutos 0:083111ae2a11 529 * @}
saloutos 0:083111ae2a11 530 */
saloutos 0:083111ae2a11 531
saloutos 0:083111ae2a11 532 /**
saloutos 0:083111ae2a11 533 * @}
saloutos 0:083111ae2a11 534 */
saloutos 0:083111ae2a11 535
saloutos 0:083111ae2a11 536 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/