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.
TARGET_NUCLEO_H743ZI/TOOLCHAIN_ARM_STD/stm32h7xx_hal_def.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 172:65be27845400 | 1 | /** |
AnnaBridge | 172:65be27845400 | 2 | ****************************************************************************** |
AnnaBridge | 172:65be27845400 | 3 | * @file stm32h7xx_hal_def.h |
AnnaBridge | 172:65be27845400 | 4 | * @author MCD Application Team |
AnnaBridge | 172:65be27845400 | 5 | * @brief This file contains HAL common defines, enumeration, macros and |
AnnaBridge | 172:65be27845400 | 6 | * structures definitions. |
AnnaBridge | 172:65be27845400 | 7 | ****************************************************************************** |
AnnaBridge | 172:65be27845400 | 8 | * @attention |
AnnaBridge | 172:65be27845400 | 9 | * |
AnnaBridge | 172:65be27845400 | 10 | * <h2><center>© Copyright (c) 2017 STMicroelectronics. |
AnnaBridge | 172:65be27845400 | 11 | * All rights reserved.</center></h2> |
AnnaBridge | 172:65be27845400 | 12 | * |
AnnaBridge | 172:65be27845400 | 13 | * This software component is licensed by ST under BSD 3-Clause license, |
AnnaBridge | 172:65be27845400 | 14 | * the "License"; You may not use this file except in compliance with the |
AnnaBridge | 172:65be27845400 | 15 | * License. You may obtain a copy of the License at: |
AnnaBridge | 172:65be27845400 | 16 | * opensource.org/licenses/BSD-3-Clause |
AnnaBridge | 172:65be27845400 | 17 | * |
AnnaBridge | 172:65be27845400 | 18 | ****************************************************************************** |
AnnaBridge | 172:65be27845400 | 19 | */ |
AnnaBridge | 172:65be27845400 | 20 | |
AnnaBridge | 172:65be27845400 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ |
AnnaBridge | 172:65be27845400 | 22 | #ifndef STM32H7xx_HAL_DEF |
AnnaBridge | 172:65be27845400 | 23 | #define STM32H7xx_HAL_DEF |
AnnaBridge | 172:65be27845400 | 24 | |
AnnaBridge | 172:65be27845400 | 25 | #ifdef __cplusplus |
AnnaBridge | 172:65be27845400 | 26 | extern "C" { |
AnnaBridge | 172:65be27845400 | 27 | #endif |
AnnaBridge | 172:65be27845400 | 28 | |
AnnaBridge | 172:65be27845400 | 29 | /* Includes ------------------------------------------------------------------*/ |
AnnaBridge | 172:65be27845400 | 30 | #include "stm32h7xx.h" |
AnnaBridge | 172:65be27845400 | 31 | #include "stm32_hal_legacy.h" |
AnnaBridge | 172:65be27845400 | 32 | #include <stddef.h> |
AnnaBridge | 172:65be27845400 | 33 | #include <math.h> |
AnnaBridge | 172:65be27845400 | 34 | |
AnnaBridge | 172:65be27845400 | 35 | /* Exported types ------------------------------------------------------------*/ |
AnnaBridge | 172:65be27845400 | 36 | |
AnnaBridge | 172:65be27845400 | 37 | /** |
AnnaBridge | 172:65be27845400 | 38 | * @brief HAL Status structures definition |
AnnaBridge | 172:65be27845400 | 39 | */ |
AnnaBridge | 172:65be27845400 | 40 | typedef enum |
AnnaBridge | 172:65be27845400 | 41 | { |
AnnaBridge | 172:65be27845400 | 42 | HAL_OK = 0x00, |
AnnaBridge | 172:65be27845400 | 43 | HAL_ERROR = 0x01, |
AnnaBridge | 172:65be27845400 | 44 | HAL_BUSY = 0x02, |
AnnaBridge | 172:65be27845400 | 45 | HAL_TIMEOUT = 0x03 |
AnnaBridge | 172:65be27845400 | 46 | } HAL_StatusTypeDef; |
AnnaBridge | 172:65be27845400 | 47 | |
AnnaBridge | 172:65be27845400 | 48 | /** |
AnnaBridge | 172:65be27845400 | 49 | * @brief HAL Lock structures definition |
AnnaBridge | 172:65be27845400 | 50 | */ |
AnnaBridge | 172:65be27845400 | 51 | typedef enum |
AnnaBridge | 172:65be27845400 | 52 | { |
AnnaBridge | 172:65be27845400 | 53 | HAL_UNLOCKED = 0x00, |
AnnaBridge | 172:65be27845400 | 54 | HAL_LOCKED = 0x01 |
AnnaBridge | 172:65be27845400 | 55 | } HAL_LockTypeDef; |
AnnaBridge | 172:65be27845400 | 56 | |
AnnaBridge | 172:65be27845400 | 57 | /* Exported macro ------------------------------------------------------------*/ |
AnnaBridge | 172:65be27845400 | 58 | |
AnnaBridge | 172:65be27845400 | 59 | #define HAL_MAX_DELAY 0xFFFFFFFFU |
AnnaBridge | 172:65be27845400 | 60 | |
AnnaBridge | 172:65be27845400 | 61 | #define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT)) |
AnnaBridge | 172:65be27845400 | 62 | #define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U) |
AnnaBridge | 172:65be27845400 | 63 | |
AnnaBridge | 172:65be27845400 | 64 | #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \ |
AnnaBridge | 172:65be27845400 | 65 | do{ \ |
AnnaBridge | 172:65be27845400 | 66 | (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \ |
AnnaBridge | 172:65be27845400 | 67 | (__DMA_HANDLE__).Parent = (__HANDLE__); \ |
AnnaBridge | 172:65be27845400 | 68 | } while(0) |
AnnaBridge | 172:65be27845400 | 69 | |
AnnaBridge | 172:65be27845400 | 70 | #define UNUSED(x) ((void)(x)) |
AnnaBridge | 172:65be27845400 | 71 | |
AnnaBridge | 172:65be27845400 | 72 | /** @brief Reset the Handle's State field. |
AnnaBridge | 172:65be27845400 | 73 | * @param __HANDLE__: specifies the Peripheral Handle. |
AnnaBridge | 172:65be27845400 | 74 | * @note This macro can be used for the following purpose: |
AnnaBridge | 172:65be27845400 | 75 | * - When the Handle is declared as local variable; before passing it as parameter |
AnnaBridge | 172:65be27845400 | 76 | * to HAL_PPP_Init() for the first time, it is mandatory to use this macro |
AnnaBridge | 172:65be27845400 | 77 | * to set to 0 the Handle's "State" field. |
AnnaBridge | 172:65be27845400 | 78 | * Otherwise, "State" field may have any random value and the first time the function |
AnnaBridge | 172:65be27845400 | 79 | * HAL_PPP_Init() is called, the low level hardware initialization will be missed |
AnnaBridge | 172:65be27845400 | 80 | * (i.e. HAL_PPP_MspInit() will not be executed). |
AnnaBridge | 172:65be27845400 | 81 | * - When there is a need to reconfigure the low level hardware: instead of calling |
AnnaBridge | 172:65be27845400 | 82 | * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). |
AnnaBridge | 172:65be27845400 | 83 | * In this later function, when the Handle's "State" field is set to 0, it will execute the function |
AnnaBridge | 172:65be27845400 | 84 | * HAL_PPP_MspInit() which will reconfigure the low level hardware. |
AnnaBridge | 172:65be27845400 | 85 | * @retval None |
AnnaBridge | 172:65be27845400 | 86 | */ |
AnnaBridge | 172:65be27845400 | 87 | #define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0) |
AnnaBridge | 172:65be27845400 | 88 | |
AnnaBridge | 172:65be27845400 | 89 | #if (USE_RTOS == 1) |
AnnaBridge | 172:65be27845400 | 90 | #error " USE_RTOS should be 0 in the current HAL release " |
AnnaBridge | 172:65be27845400 | 91 | #else |
AnnaBridge | 172:65be27845400 | 92 | #define __HAL_LOCK(__HANDLE__) \ |
AnnaBridge | 172:65be27845400 | 93 | do{ \ |
AnnaBridge | 172:65be27845400 | 94 | if((__HANDLE__)->Lock == HAL_LOCKED) \ |
AnnaBridge | 172:65be27845400 | 95 | { \ |
AnnaBridge | 172:65be27845400 | 96 | return HAL_BUSY; \ |
AnnaBridge | 172:65be27845400 | 97 | } \ |
AnnaBridge | 172:65be27845400 | 98 | else \ |
AnnaBridge | 172:65be27845400 | 99 | { \ |
AnnaBridge | 172:65be27845400 | 100 | (__HANDLE__)->Lock = HAL_LOCKED; \ |
AnnaBridge | 172:65be27845400 | 101 | } \ |
AnnaBridge | 172:65be27845400 | 102 | }while (0) |
AnnaBridge | 172:65be27845400 | 103 | |
AnnaBridge | 172:65be27845400 | 104 | #define __HAL_UNLOCK(__HANDLE__) \ |
AnnaBridge | 172:65be27845400 | 105 | do{ \ |
AnnaBridge | 172:65be27845400 | 106 | (__HANDLE__)->Lock = HAL_UNLOCKED; \ |
AnnaBridge | 172:65be27845400 | 107 | }while (0) |
AnnaBridge | 172:65be27845400 | 108 | #endif /* USE_RTOS */ |
AnnaBridge | 172:65be27845400 | 109 | |
AnnaBridge | 172:65be27845400 | 110 | #if defined ( __GNUC__ ) |
AnnaBridge | 172:65be27845400 | 111 | #ifndef __weak |
AnnaBridge | 172:65be27845400 | 112 | #define __weak __attribute__((weak)) |
AnnaBridge | 172:65be27845400 | 113 | #endif /* __weak */ |
AnnaBridge | 172:65be27845400 | 114 | #ifndef __packed |
AnnaBridge | 172:65be27845400 | 115 | #define __packed __attribute__((__packed__)) |
AnnaBridge | 172:65be27845400 | 116 | #endif /* __packed */ |
AnnaBridge | 172:65be27845400 | 117 | #endif /* __GNUC__ */ |
AnnaBridge | 172:65be27845400 | 118 | |
AnnaBridge | 172:65be27845400 | 119 | |
AnnaBridge | 172:65be27845400 | 120 | /* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ |
AnnaBridge | 172:65be27845400 | 121 | #if defined (__GNUC__) /* GNU Compiler */ |
AnnaBridge | 172:65be27845400 | 122 | #ifndef __ALIGN_END |
AnnaBridge | 172:65be27845400 | 123 | #define __ALIGN_END __attribute__ ((aligned (4))) |
AnnaBridge | 172:65be27845400 | 124 | #endif /* __ALIGN_END */ |
AnnaBridge | 172:65be27845400 | 125 | #ifndef __ALIGN_BEGIN |
AnnaBridge | 172:65be27845400 | 126 | #define __ALIGN_BEGIN |
AnnaBridge | 172:65be27845400 | 127 | #endif /* __ALIGN_BEGIN */ |
AnnaBridge | 172:65be27845400 | 128 | #else |
AnnaBridge | 172:65be27845400 | 129 | #ifndef __ALIGN_END |
AnnaBridge | 172:65be27845400 | 130 | #define __ALIGN_END |
AnnaBridge | 172:65be27845400 | 131 | #endif /* __ALIGN_END */ |
AnnaBridge | 172:65be27845400 | 132 | #ifndef __ALIGN_BEGIN |
AnnaBridge | 172:65be27845400 | 133 | #if defined (__CC_ARM) /* ARM Compiler */ |
AnnaBridge | 172:65be27845400 | 134 | #define __ALIGN_BEGIN __align(4) |
AnnaBridge | 172:65be27845400 | 135 | #elif defined (__ICCARM__) /* IAR Compiler */ |
AnnaBridge | 172:65be27845400 | 136 | #define __ALIGN_BEGIN |
AnnaBridge | 172:65be27845400 | 137 | #endif /* __CC_ARM */ |
AnnaBridge | 172:65be27845400 | 138 | #endif /* __ALIGN_BEGIN */ |
AnnaBridge | 172:65be27845400 | 139 | #endif /* __GNUC__ */ |
AnnaBridge | 172:65be27845400 | 140 | |
AnnaBridge | 172:65be27845400 | 141 | /* Macro to get variable aligned on 32-bytes,needed for cache maintenance purpose */ |
AnnaBridge | 172:65be27845400 | 142 | #if defined (__GNUC__) /* GNU Compiler */ |
AnnaBridge | 172:65be27845400 | 143 | #define ALIGN_32BYTES(buf) buf __attribute__ ((aligned (32))) |
AnnaBridge | 172:65be27845400 | 144 | #elif defined (__ICCARM__) /* IAR Compiler */ |
AnnaBridge | 172:65be27845400 | 145 | #define ALIGN_32BYTES(buf) _Pragma("data_alignment=32") buf |
AnnaBridge | 172:65be27845400 | 146 | #elif defined (__CC_ARM) /* ARM Compiler */ |
AnnaBridge | 172:65be27845400 | 147 | #define ALIGN_32BYTES(buf) __align(32) buf |
AnnaBridge | 172:65be27845400 | 148 | #endif |
AnnaBridge | 172:65be27845400 | 149 | |
AnnaBridge | 172:65be27845400 | 150 | /** |
AnnaBridge | 172:65be27845400 | 151 | * @brief __RAM_FUNC definition |
AnnaBridge | 172:65be27845400 | 152 | */ |
AnnaBridge | 172:65be27845400 | 153 | #if defined ( __CC_ARM ) |
AnnaBridge | 172:65be27845400 | 154 | /* ARM Compiler |
AnnaBridge | 172:65be27845400 | 155 | ------------ |
AnnaBridge | 172:65be27845400 | 156 | RAM functions are defined using the toolchain options. |
AnnaBridge | 172:65be27845400 | 157 | Functions that are executed in RAM should reside in a separate source module. |
AnnaBridge | 172:65be27845400 | 158 | Using the 'Options for File' dialog you can simply change the 'Code / Const' |
AnnaBridge | 172:65be27845400 | 159 | area of a module to a memory space in physical RAM. |
AnnaBridge | 172:65be27845400 | 160 | Available memory areas are declared in the 'Target' tab of the 'Options for Target' |
AnnaBridge | 172:65be27845400 | 161 | dialog. |
AnnaBridge | 172:65be27845400 | 162 | */ |
AnnaBridge | 172:65be27845400 | 163 | #define __RAM_FUNC |
AnnaBridge | 172:65be27845400 | 164 | |
AnnaBridge | 172:65be27845400 | 165 | #elif defined ( __ICCARM__ ) |
AnnaBridge | 172:65be27845400 | 166 | /* ICCARM Compiler |
AnnaBridge | 172:65be27845400 | 167 | --------------- |
AnnaBridge | 172:65be27845400 | 168 | RAM functions are defined using a specific toolchain keyword "__ramfunc". |
AnnaBridge | 172:65be27845400 | 169 | */ |
AnnaBridge | 172:65be27845400 | 170 | #define __RAM_FUNC __ramfunc |
AnnaBridge | 172:65be27845400 | 171 | |
AnnaBridge | 172:65be27845400 | 172 | #elif defined ( __GNUC__ ) |
AnnaBridge | 172:65be27845400 | 173 | /* GNU Compiler |
AnnaBridge | 172:65be27845400 | 174 | ------------ |
AnnaBridge | 172:65be27845400 | 175 | RAM functions are defined using a specific toolchain attribute |
AnnaBridge | 172:65be27845400 | 176 | "__attribute__((section(".RamFunc")))". |
AnnaBridge | 172:65be27845400 | 177 | */ |
AnnaBridge | 172:65be27845400 | 178 | #define __RAM_FUNC __attribute__((section(".RamFunc"))) |
AnnaBridge | 172:65be27845400 | 179 | |
AnnaBridge | 172:65be27845400 | 180 | #endif |
AnnaBridge | 172:65be27845400 | 181 | |
AnnaBridge | 172:65be27845400 | 182 | #ifdef __cplusplus |
AnnaBridge | 172:65be27845400 | 183 | } |
AnnaBridge | 172:65be27845400 | 184 | #endif |
AnnaBridge | 172:65be27845400 | 185 | |
AnnaBridge | 172:65be27845400 | 186 | #endif /* STM32H7xx_HAL_DEF */ |
AnnaBridge | 172:65be27845400 | 187 | |
AnnaBridge | 172:65be27845400 | 188 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |