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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_NUCLEO_F207ZG/TARGET_STM/TARGET_STM32F2/device/stm32f2xx_ll_utils.h@145:64910690c574
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 145:64910690c574 1 /**
AnnaBridge 145:64910690c574 2 ******************************************************************************
AnnaBridge 145:64910690c574 3 * @file stm32f2xx_ll_utils.h
AnnaBridge 145:64910690c574 4 * @author MCD Application Team
AnnaBridge 145:64910690c574 5 * @version V1.2.1
AnnaBridge 145:64910690c574 6 * @date 14-April-2017
AnnaBridge 145:64910690c574 7 * @brief Header file of UTILS LL module.
AnnaBridge 145:64910690c574 8 @verbatim
AnnaBridge 145:64910690c574 9 ==============================================================================
AnnaBridge 145:64910690c574 10 ##### How to use this driver #####
AnnaBridge 145:64910690c574 11 ==============================================================================
AnnaBridge 145:64910690c574 12 [..]
AnnaBridge 145:64910690c574 13 The LL UTILS driver contains a set of generic APIs that can be
AnnaBridge 145:64910690c574 14 used by user:
AnnaBridge 145:64910690c574 15 (+) Device electronic signature
AnnaBridge 145:64910690c574 16 (+) Timing functions
AnnaBridge 145:64910690c574 17 (+) PLL configuration functions
AnnaBridge 145:64910690c574 18
AnnaBridge 145:64910690c574 19 @endverbatim
AnnaBridge 145:64910690c574 20 ******************************************************************************
AnnaBridge 145:64910690c574 21 * @attention
AnnaBridge 145:64910690c574 22 *
AnnaBridge 145:64910690c574 23 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 145:64910690c574 24 *
AnnaBridge 145:64910690c574 25 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 145:64910690c574 26 * are permitted provided that the following conditions are met:
AnnaBridge 145:64910690c574 27 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 145:64910690c574 28 * this list of conditions and the following disclaimer.
AnnaBridge 145:64910690c574 29 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 145:64910690c574 30 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 145:64910690c574 31 * and/or other materials provided with the distribution.
AnnaBridge 145:64910690c574 32 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 145:64910690c574 33 * may be used to endorse or promote products derived from this software
AnnaBridge 145:64910690c574 34 * without specific prior written permission.
AnnaBridge 145:64910690c574 35 *
AnnaBridge 145:64910690c574 36 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 145:64910690c574 37 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 145:64910690c574 38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 145:64910690c574 39 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 145:64910690c574 40 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 145:64910690c574 41 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 145:64910690c574 42 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 145:64910690c574 43 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 145:64910690c574 44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 145:64910690c574 45 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 145:64910690c574 46 *
AnnaBridge 145:64910690c574 47 ******************************************************************************
AnnaBridge 145:64910690c574 48 */
AnnaBridge 145:64910690c574 49
AnnaBridge 145:64910690c574 50 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 145:64910690c574 51 #ifndef __STM32F2xx_LL_UTILS_H
AnnaBridge 145:64910690c574 52 #define __STM32F2xx_LL_UTILS_H
AnnaBridge 145:64910690c574 53
AnnaBridge 145:64910690c574 54 #ifdef __cplusplus
AnnaBridge 145:64910690c574 55 extern "C" {
AnnaBridge 145:64910690c574 56 #endif
AnnaBridge 145:64910690c574 57
AnnaBridge 145:64910690c574 58 /* Includes ------------------------------------------------------------------*/
AnnaBridge 145:64910690c574 59 #include "stm32f2xx.h"
AnnaBridge 145:64910690c574 60
AnnaBridge 145:64910690c574 61 /** @addtogroup STM32F2xx_LL_Driver
AnnaBridge 145:64910690c574 62 * @{
AnnaBridge 145:64910690c574 63 */
AnnaBridge 145:64910690c574 64
AnnaBridge 145:64910690c574 65 /** @defgroup UTILS_LL UTILS
AnnaBridge 145:64910690c574 66 * @{
AnnaBridge 145:64910690c574 67 */
AnnaBridge 145:64910690c574 68
AnnaBridge 145:64910690c574 69 /* Private types -------------------------------------------------------------*/
AnnaBridge 145:64910690c574 70 /* Private variables ---------------------------------------------------------*/
AnnaBridge 145:64910690c574 71
AnnaBridge 145:64910690c574 72 /* Private constants ---------------------------------------------------------*/
AnnaBridge 145:64910690c574 73 /** @defgroup UTILS_LL_Private_Constants UTILS Private Constants
AnnaBridge 145:64910690c574 74 * @{
AnnaBridge 145:64910690c574 75 */
AnnaBridge 145:64910690c574 76
AnnaBridge 145:64910690c574 77 /* Max delay can be used in LL_mDelay */
AnnaBridge 145:64910690c574 78 #define LL_MAX_DELAY 0xFFFFFFFFU
AnnaBridge 145:64910690c574 79
AnnaBridge 145:64910690c574 80 /**
AnnaBridge 145:64910690c574 81 * @brief Unique device ID register base address
AnnaBridge 145:64910690c574 82 */
AnnaBridge 145:64910690c574 83 #define UID_BASE_ADDRESS UID_BASE
AnnaBridge 145:64910690c574 84
AnnaBridge 145:64910690c574 85 /**
AnnaBridge 145:64910690c574 86 * @brief Flash size data register base address
AnnaBridge 145:64910690c574 87 */
AnnaBridge 145:64910690c574 88 #define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE
AnnaBridge 145:64910690c574 89
AnnaBridge 145:64910690c574 90 /**
AnnaBridge 145:64910690c574 91 * @}
AnnaBridge 145:64910690c574 92 */
AnnaBridge 145:64910690c574 93
AnnaBridge 145:64910690c574 94 /* Private macros ------------------------------------------------------------*/
AnnaBridge 145:64910690c574 95 /** @defgroup UTILS_LL_Private_Macros UTILS Private Macros
AnnaBridge 145:64910690c574 96 * @{
AnnaBridge 145:64910690c574 97 */
AnnaBridge 145:64910690c574 98 /**
AnnaBridge 145:64910690c574 99 * @}
AnnaBridge 145:64910690c574 100 */
AnnaBridge 145:64910690c574 101 /* Exported types ------------------------------------------------------------*/
AnnaBridge 145:64910690c574 102 /** @defgroup UTILS_LL_ES_INIT UTILS Exported structures
AnnaBridge 145:64910690c574 103 * @{
AnnaBridge 145:64910690c574 104 */
AnnaBridge 145:64910690c574 105 /**
AnnaBridge 145:64910690c574 106 * @brief UTILS PLL structure definition
AnnaBridge 145:64910690c574 107 */
AnnaBridge 145:64910690c574 108 typedef struct
AnnaBridge 145:64910690c574 109 {
AnnaBridge 145:64910690c574 110 uint32_t PLLM; /*!< Division factor for PLL VCO input clock.
AnnaBridge 145:64910690c574 111 This parameter can be a value of @ref RCC_LL_EC_PLLM_DIV
AnnaBridge 145:64910690c574 112
AnnaBridge 145:64910690c574 113 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 114 @ref LL_RCC_PLL_ConfigDomain_SYS(). */
AnnaBridge 145:64910690c574 115
AnnaBridge 145:64910690c574 116 uint32_t PLLN; /*!< Multiplication factor for PLL VCO output clock.
AnnaBridge 145:64910690c574 117 This parameter must be a number between Min_Data = 8 and Max_Data = 86
AnnaBridge 145:64910690c574 118
AnnaBridge 145:64910690c574 119 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 120 @ref LL_RCC_PLL_ConfigDomain_SYS(). */
AnnaBridge 145:64910690c574 121
AnnaBridge 145:64910690c574 122 uint32_t PLLP; /*!< Division for the main system clock.
AnnaBridge 145:64910690c574 123 This parameter can be a value of @ref RCC_LL_EC_PLLP_DIV
AnnaBridge 145:64910690c574 124
AnnaBridge 145:64910690c574 125 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 126 @ref LL_RCC_PLL_ConfigDomain_SYS(). */
AnnaBridge 145:64910690c574 127 } LL_UTILS_PLLInitTypeDef;
AnnaBridge 145:64910690c574 128
AnnaBridge 145:64910690c574 129 /**
AnnaBridge 145:64910690c574 130 * @brief UTILS System, AHB and APB buses clock configuration structure definition
AnnaBridge 145:64910690c574 131 */
AnnaBridge 145:64910690c574 132 typedef struct
AnnaBridge 145:64910690c574 133 {
AnnaBridge 145:64910690c574 134 uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK).
AnnaBridge 145:64910690c574 135 This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV
AnnaBridge 145:64910690c574 136
AnnaBridge 145:64910690c574 137 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 138 @ref LL_RCC_SetAHBPrescaler(). */
AnnaBridge 145:64910690c574 139
AnnaBridge 145:64910690c574 140 uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).
AnnaBridge 145:64910690c574 141 This parameter can be a value of @ref RCC_LL_EC_APB1_DIV
AnnaBridge 145:64910690c574 142
AnnaBridge 145:64910690c574 143 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 144 @ref LL_RCC_SetAPB1Prescaler(). */
AnnaBridge 145:64910690c574 145
AnnaBridge 145:64910690c574 146 uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).
AnnaBridge 145:64910690c574 147 This parameter can be a value of @ref RCC_LL_EC_APB2_DIV
AnnaBridge 145:64910690c574 148
AnnaBridge 145:64910690c574 149 This feature can be modified afterwards using unitary function
AnnaBridge 145:64910690c574 150 @ref LL_RCC_SetAPB2Prescaler(). */
AnnaBridge 145:64910690c574 151
AnnaBridge 145:64910690c574 152 } LL_UTILS_ClkInitTypeDef;
AnnaBridge 145:64910690c574 153
AnnaBridge 145:64910690c574 154 /**
AnnaBridge 145:64910690c574 155 * @}
AnnaBridge 145:64910690c574 156 */
AnnaBridge 145:64910690c574 157
AnnaBridge 145:64910690c574 158 /* Exported constants --------------------------------------------------------*/
AnnaBridge 145:64910690c574 159 /** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants
AnnaBridge 145:64910690c574 160 * @{
AnnaBridge 145:64910690c574 161 */
AnnaBridge 145:64910690c574 162
AnnaBridge 145:64910690c574 163 /** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation
AnnaBridge 145:64910690c574 164 * @{
AnnaBridge 145:64910690c574 165 */
AnnaBridge 145:64910690c574 166 #define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */
AnnaBridge 145:64910690c574 167 #define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */
AnnaBridge 145:64910690c574 168 /**
AnnaBridge 145:64910690c574 169 * @}
AnnaBridge 145:64910690c574 170 */
AnnaBridge 145:64910690c574 171
AnnaBridge 145:64910690c574 172 /**
AnnaBridge 145:64910690c574 173 * @}
AnnaBridge 145:64910690c574 174 */
AnnaBridge 145:64910690c574 175
AnnaBridge 145:64910690c574 176 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 145:64910690c574 177
AnnaBridge 145:64910690c574 178 /* Exported functions --------------------------------------------------------*/
AnnaBridge 145:64910690c574 179 /** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions
AnnaBridge 145:64910690c574 180 * @{
AnnaBridge 145:64910690c574 181 */
AnnaBridge 145:64910690c574 182
AnnaBridge 145:64910690c574 183 /** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE
AnnaBridge 145:64910690c574 184 * @{
AnnaBridge 145:64910690c574 185 */
AnnaBridge 145:64910690c574 186
AnnaBridge 145:64910690c574 187 /**
AnnaBridge 145:64910690c574 188 * @brief Get Word0 of the unique device identifier (UID based on 96 bits)
AnnaBridge 145:64910690c574 189 * @retval UID[31:0]
AnnaBridge 145:64910690c574 190 */
AnnaBridge 145:64910690c574 191 __STATIC_INLINE uint32_t LL_GetUID_Word0(void)
AnnaBridge 145:64910690c574 192 {
AnnaBridge 145:64910690c574 193 return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS)));
AnnaBridge 145:64910690c574 194 }
AnnaBridge 145:64910690c574 195
AnnaBridge 145:64910690c574 196 /**
AnnaBridge 145:64910690c574 197 * @brief Get Word1 of the unique device identifier (UID based on 96 bits)
AnnaBridge 145:64910690c574 198 * @retval UID[63:32]
AnnaBridge 145:64910690c574 199 */
AnnaBridge 145:64910690c574 200 __STATIC_INLINE uint32_t LL_GetUID_Word1(void)
AnnaBridge 145:64910690c574 201 {
AnnaBridge 145:64910690c574 202 return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U))));
AnnaBridge 145:64910690c574 203 }
AnnaBridge 145:64910690c574 204
AnnaBridge 145:64910690c574 205 /**
AnnaBridge 145:64910690c574 206 * @brief Get Word2 of the unique device identifier (UID based on 96 bits)
AnnaBridge 145:64910690c574 207 * @retval UID[95:64]
AnnaBridge 145:64910690c574 208 */
AnnaBridge 145:64910690c574 209 __STATIC_INLINE uint32_t LL_GetUID_Word2(void)
AnnaBridge 145:64910690c574 210 {
AnnaBridge 145:64910690c574 211 return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U))));
AnnaBridge 145:64910690c574 212 }
AnnaBridge 145:64910690c574 213
AnnaBridge 145:64910690c574 214 /**
AnnaBridge 145:64910690c574 215 * @brief Get Flash memory size
AnnaBridge 145:64910690c574 216 * @note This bitfield indicates the size of the device Flash memory expressed in
AnnaBridge 145:64910690c574 217 * Kbytes. As an example, 0x040 corresponds to 64 Kbytes.
AnnaBridge 145:64910690c574 218 * @retval FLASH_SIZE[15:0]: Flash memory size
AnnaBridge 145:64910690c574 219 */
AnnaBridge 145:64910690c574 220 __STATIC_INLINE uint32_t LL_GetFlashSize(void)
AnnaBridge 145:64910690c574 221 {
AnnaBridge 145:64910690c574 222 return (uint16_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)));
AnnaBridge 145:64910690c574 223 }
AnnaBridge 145:64910690c574 224
AnnaBridge 145:64910690c574 225
AnnaBridge 145:64910690c574 226 /**
AnnaBridge 145:64910690c574 227 * @}
AnnaBridge 145:64910690c574 228 */
AnnaBridge 145:64910690c574 229
AnnaBridge 145:64910690c574 230 /** @defgroup UTILS_LL_EF_DELAY DELAY
AnnaBridge 145:64910690c574 231 * @{
AnnaBridge 145:64910690c574 232 */
AnnaBridge 145:64910690c574 233
AnnaBridge 145:64910690c574 234 /**
AnnaBridge 145:64910690c574 235 * @brief This function configures the Cortex-M SysTick source of the time base.
AnnaBridge 145:64910690c574 236 * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro)
AnnaBridge 145:64910690c574 237 * @note When a RTOS is used, it is recommended to avoid changing the SysTick
AnnaBridge 145:64910690c574 238 * configuration by calling this function, for a delay use rather osDelay RTOS service.
AnnaBridge 145:64910690c574 239 * @param Ticks Number of ticks
AnnaBridge 145:64910690c574 240 * @retval None
AnnaBridge 145:64910690c574 241 */
AnnaBridge 145:64910690c574 242 __STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks)
AnnaBridge 145:64910690c574 243 {
AnnaBridge 145:64910690c574 244 /* Configure the SysTick to have interrupt in 1ms time base */
AnnaBridge 145:64910690c574 245 SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */
AnnaBridge 145:64910690c574 246 SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
AnnaBridge 145:64910690c574 247 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
AnnaBridge 145:64910690c574 248 SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */
AnnaBridge 145:64910690c574 249 }
AnnaBridge 145:64910690c574 250
AnnaBridge 145:64910690c574 251 void LL_Init1msTick(uint32_t HCLKFrequency);
AnnaBridge 145:64910690c574 252 void LL_mDelay(uint32_t Delay);
AnnaBridge 145:64910690c574 253
AnnaBridge 145:64910690c574 254 /**
AnnaBridge 145:64910690c574 255 * @}
AnnaBridge 145:64910690c574 256 */
AnnaBridge 145:64910690c574 257
AnnaBridge 145:64910690c574 258 /** @defgroup UTILS_EF_SYSTEM SYSTEM
AnnaBridge 145:64910690c574 259 * @{
AnnaBridge 145:64910690c574 260 */
AnnaBridge 145:64910690c574 261
AnnaBridge 145:64910690c574 262 void LL_SetSystemCoreClock(uint32_t HCLKFrequency);
AnnaBridge 145:64910690c574 263 ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct,
AnnaBridge 145:64910690c574 264 LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct);
AnnaBridge 145:64910690c574 265 ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass,
AnnaBridge 145:64910690c574 266 LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct);
AnnaBridge 145:64910690c574 267
AnnaBridge 145:64910690c574 268 /**
AnnaBridge 145:64910690c574 269 * @}
AnnaBridge 145:64910690c574 270 */
AnnaBridge 145:64910690c574 271
AnnaBridge 145:64910690c574 272 /**
AnnaBridge 145:64910690c574 273 * @}
AnnaBridge 145:64910690c574 274 */
AnnaBridge 145:64910690c574 275
AnnaBridge 145:64910690c574 276 /**
AnnaBridge 145:64910690c574 277 * @}
AnnaBridge 145:64910690c574 278 */
AnnaBridge 145:64910690c574 279
AnnaBridge 145:64910690c574 280 /**
AnnaBridge 145:64910690c574 281 * @}
AnnaBridge 145:64910690c574 282 */
AnnaBridge 145:64910690c574 283
AnnaBridge 145:64910690c574 284 #ifdef __cplusplus
AnnaBridge 145:64910690c574 285 }
AnnaBridge 145:64910690c574 286 #endif
AnnaBridge 145:64910690c574 287
AnnaBridge 145:64910690c574 288 #endif /* __STM32F2xx_LL_UTILS_H */
AnnaBridge 145:64910690c574 289
AnnaBridge 145:64910690c574 290 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/