mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 573:ad23fe03a082 1 /**
mbed_official 573:ad23fe03a082 2 ******************************************************************************
mbed_official 573:ad23fe03a082 3 * @file stm32f7xx_hal_cortex.h
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief Header file of CORTEX HAL module.
mbed_official 573:ad23fe03a082 8 ******************************************************************************
mbed_official 573:ad23fe03a082 9 * @attention
mbed_official 573:ad23fe03a082 10 *
mbed_official 573:ad23fe03a082 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 573:ad23fe03a082 12 *
mbed_official 573:ad23fe03a082 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 573:ad23fe03a082 14 * are permitted provided that the following conditions are met:
mbed_official 573:ad23fe03a082 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 573:ad23fe03a082 16 * this list of conditions and the following disclaimer.
mbed_official 573:ad23fe03a082 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 573:ad23fe03a082 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 573:ad23fe03a082 19 * and/or other materials provided with the distribution.
mbed_official 573:ad23fe03a082 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 573:ad23fe03a082 21 * may be used to endorse or promote products derived from this software
mbed_official 573:ad23fe03a082 22 * without specific prior written permission.
mbed_official 573:ad23fe03a082 23 *
mbed_official 573:ad23fe03a082 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 573:ad23fe03a082 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 573:ad23fe03a082 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 573:ad23fe03a082 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 573:ad23fe03a082 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 573:ad23fe03a082 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 573:ad23fe03a082 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 573:ad23fe03a082 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 573:ad23fe03a082 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 573:ad23fe03a082 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 573:ad23fe03a082 34 *
mbed_official 573:ad23fe03a082 35 ******************************************************************************
mbed_official 573:ad23fe03a082 36 */
mbed_official 573:ad23fe03a082 37
mbed_official 573:ad23fe03a082 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 573:ad23fe03a082 39 #ifndef __STM32F7xx_HAL_CORTEX_H
mbed_official 573:ad23fe03a082 40 #define __STM32F7xx_HAL_CORTEX_H
mbed_official 573:ad23fe03a082 41
mbed_official 573:ad23fe03a082 42 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 43 extern "C" {
mbed_official 573:ad23fe03a082 44 #endif
mbed_official 573:ad23fe03a082 45
mbed_official 573:ad23fe03a082 46 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 47 #include "stm32f7xx_hal_def.h"
mbed_official 573:ad23fe03a082 48
mbed_official 573:ad23fe03a082 49 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 50 * @{
mbed_official 573:ad23fe03a082 51 */
mbed_official 573:ad23fe03a082 52
mbed_official 573:ad23fe03a082 53 /** @addtogroup CORTEX
mbed_official 573:ad23fe03a082 54 * @{
mbed_official 573:ad23fe03a082 55 */
mbed_official 573:ad23fe03a082 56 /* Exported types ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 57 /** @defgroup CORTEX_Exported_Types Cortex Exported Types
mbed_official 573:ad23fe03a082 58 * @{
mbed_official 573:ad23fe03a082 59 */
mbed_official 573:ad23fe03a082 60
mbed_official 573:ad23fe03a082 61 #if (__MPU_PRESENT == 1)
mbed_official 573:ad23fe03a082 62 /** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition
mbed_official 573:ad23fe03a082 63 * @brief MPU Region initialization structure
mbed_official 573:ad23fe03a082 64 * @{
mbed_official 573:ad23fe03a082 65 */
mbed_official 573:ad23fe03a082 66 typedef struct
mbed_official 573:ad23fe03a082 67 {
mbed_official 573:ad23fe03a082 68 uint8_t Enable; /*!< Specifies the status of the region.
mbed_official 573:ad23fe03a082 69 This parameter can be a value of @ref CORTEX_MPU_Region_Enable */
mbed_official 573:ad23fe03a082 70 uint8_t Number; /*!< Specifies the number of the region to protect.
mbed_official 573:ad23fe03a082 71 This parameter can be a value of @ref CORTEX_MPU_Region_Number */
mbed_official 573:ad23fe03a082 72 uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. */
mbed_official 573:ad23fe03a082 73 uint8_t Size; /*!< Specifies the size of the region to protect.
mbed_official 573:ad23fe03a082 74 This parameter can be a value of @ref CORTEX_MPU_Region_Size */
mbed_official 573:ad23fe03a082 75 uint8_t SubRegionDisable; /*!< Specifies the number of the subregion protection to disable.
mbed_official 573:ad23fe03a082 76 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */
mbed_official 573:ad23fe03a082 77 uint8_t TypeExtField; /*!< Specifies the TEX field level.
mbed_official 573:ad23fe03a082 78 This parameter can be a value of @ref CORTEX_MPU_TEX_Levels */
mbed_official 573:ad23fe03a082 79 uint8_t AccessPermission; /*!< Specifies the region access permission type.
mbed_official 573:ad23fe03a082 80 This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes */
mbed_official 573:ad23fe03a082 81 uint8_t DisableExec; /*!< Specifies the instruction access status.
mbed_official 573:ad23fe03a082 82 This parameter can be a value of @ref CORTEX_MPU_Instruction_Access */
mbed_official 573:ad23fe03a082 83 uint8_t IsShareable; /*!< Specifies the shareability status of the protected region.
mbed_official 573:ad23fe03a082 84 This parameter can be a value of @ref CORTEX_MPU_Access_Shareable */
mbed_official 573:ad23fe03a082 85 uint8_t IsCacheable; /*!< Specifies the cacheable status of the region protected.
mbed_official 573:ad23fe03a082 86 This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable */
mbed_official 573:ad23fe03a082 87 uint8_t IsBufferable; /*!< Specifies the bufferable status of the protected region.
mbed_official 573:ad23fe03a082 88 This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable */
mbed_official 573:ad23fe03a082 89 }MPU_Region_InitTypeDef;
mbed_official 573:ad23fe03a082 90 /**
mbed_official 573:ad23fe03a082 91 * @}
mbed_official 573:ad23fe03a082 92 */
mbed_official 573:ad23fe03a082 93 #endif /* __MPU_PRESENT */
mbed_official 573:ad23fe03a082 94
mbed_official 573:ad23fe03a082 95 /**
mbed_official 573:ad23fe03a082 96 * @}
mbed_official 573:ad23fe03a082 97 */
mbed_official 573:ad23fe03a082 98
mbed_official 573:ad23fe03a082 99 /* Exported constants --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 100
mbed_official 573:ad23fe03a082 101 /** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants
mbed_official 573:ad23fe03a082 102 * @{
mbed_official 573:ad23fe03a082 103 */
mbed_official 573:ad23fe03a082 104
mbed_official 573:ad23fe03a082 105 /** @defgroup CORTEX_Preemption_Priority_Group CORTEX Preemption Priority Group
mbed_official 573:ad23fe03a082 106 * @{
mbed_official 573:ad23fe03a082 107 */
mbed_official 573:ad23fe03a082 108 #define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007) /*!< 0 bits for pre-emption priority
mbed_official 573:ad23fe03a082 109 4 bits for subpriority */
mbed_official 573:ad23fe03a082 110 #define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006) /*!< 1 bits for pre-emption priority
mbed_official 573:ad23fe03a082 111 3 bits for subpriority */
mbed_official 573:ad23fe03a082 112 #define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority
mbed_official 573:ad23fe03a082 113 2 bits for subpriority */
mbed_official 573:ad23fe03a082 114 #define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority
mbed_official 573:ad23fe03a082 115 1 bits for subpriority */
mbed_official 573:ad23fe03a082 116 #define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority
mbed_official 573:ad23fe03a082 117 0 bits for subpriority */
mbed_official 573:ad23fe03a082 118 /**
mbed_official 573:ad23fe03a082 119 * @}
mbed_official 573:ad23fe03a082 120 */
mbed_official 573:ad23fe03a082 121
mbed_official 573:ad23fe03a082 122 /** @defgroup CORTEX_SysTick_clock_source CORTEX _SysTick clock source
mbed_official 573:ad23fe03a082 123 * @{
mbed_official 573:ad23fe03a082 124 */
mbed_official 573:ad23fe03a082 125 #define SYSTICK_CLKSOURCE_HCLK_DIV8 ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 126 #define SYSTICK_CLKSOURCE_HCLK ((uint32_t)0x00000004)
mbed_official 573:ad23fe03a082 127
mbed_official 573:ad23fe03a082 128 /**
mbed_official 573:ad23fe03a082 129 * @}
mbed_official 573:ad23fe03a082 130 */
mbed_official 573:ad23fe03a082 131
mbed_official 573:ad23fe03a082 132 #if (__MPU_PRESENT == 1)
mbed_official 573:ad23fe03a082 133 /** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control
mbed_official 573:ad23fe03a082 134 * @{
mbed_official 573:ad23fe03a082 135 */
mbed_official 573:ad23fe03a082 136 #define MPU_HFNMI_PRIVDEF_NONE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 137 #define MPU_HARDFAULT_NMI ((uint32_t)0x00000002)
mbed_official 573:ad23fe03a082 138 #define MPU_PRIVILEGED_DEFAULT ((uint32_t)0x00000004)
mbed_official 573:ad23fe03a082 139 #define MPU_HFNMI_PRIVDEF ((uint32_t)0x00000006)
mbed_official 573:ad23fe03a082 140 /**
mbed_official 573:ad23fe03a082 141 * @}
mbed_official 573:ad23fe03a082 142 */
mbed_official 573:ad23fe03a082 143
mbed_official 573:ad23fe03a082 144 /** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable
mbed_official 573:ad23fe03a082 145 * @{
mbed_official 573:ad23fe03a082 146 */
mbed_official 573:ad23fe03a082 147 #define MPU_REGION_ENABLE ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 148 #define MPU_REGION_DISABLE ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 149 /**
mbed_official 573:ad23fe03a082 150 * @}
mbed_official 573:ad23fe03a082 151 */
mbed_official 573:ad23fe03a082 152
mbed_official 573:ad23fe03a082 153 /** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access
mbed_official 573:ad23fe03a082 154 * @{
mbed_official 573:ad23fe03a082 155 */
mbed_official 573:ad23fe03a082 156 #define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 157 #define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 158 /**
mbed_official 573:ad23fe03a082 159 * @}
mbed_official 573:ad23fe03a082 160 */
mbed_official 573:ad23fe03a082 161
mbed_official 573:ad23fe03a082 162 /** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable
mbed_official 573:ad23fe03a082 163 * @{
mbed_official 573:ad23fe03a082 164 */
mbed_official 573:ad23fe03a082 165 #define MPU_ACCESS_SHAREABLE ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 166 #define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 167 /**
mbed_official 573:ad23fe03a082 168 * @}
mbed_official 573:ad23fe03a082 169 */
mbed_official 573:ad23fe03a082 170
mbed_official 573:ad23fe03a082 171 /** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable
mbed_official 573:ad23fe03a082 172 * @{
mbed_official 573:ad23fe03a082 173 */
mbed_official 573:ad23fe03a082 174 #define MPU_ACCESS_CACHEABLE ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 175 #define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 176 /**
mbed_official 573:ad23fe03a082 177 * @}
mbed_official 573:ad23fe03a082 178 */
mbed_official 573:ad23fe03a082 179
mbed_official 573:ad23fe03a082 180 /** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable
mbed_official 573:ad23fe03a082 181 * @{
mbed_official 573:ad23fe03a082 182 */
mbed_official 573:ad23fe03a082 183 #define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 184 #define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 185 /**
mbed_official 573:ad23fe03a082 186 * @}
mbed_official 573:ad23fe03a082 187 */
mbed_official 573:ad23fe03a082 188
mbed_official 573:ad23fe03a082 189 /** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels
mbed_official 573:ad23fe03a082 190 * @{
mbed_official 573:ad23fe03a082 191 */
mbed_official 573:ad23fe03a082 192 #define MPU_TEX_LEVEL0 ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 193 #define MPU_TEX_LEVEL1 ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 194 #define MPU_TEX_LEVEL2 ((uint8_t)0x02)
mbed_official 573:ad23fe03a082 195 /**
mbed_official 573:ad23fe03a082 196 * @}
mbed_official 573:ad23fe03a082 197 */
mbed_official 573:ad23fe03a082 198
mbed_official 573:ad23fe03a082 199 /** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size
mbed_official 573:ad23fe03a082 200 * @{
mbed_official 573:ad23fe03a082 201 */
mbed_official 573:ad23fe03a082 202 #define MPU_REGION_SIZE_32B ((uint8_t)0x04)
mbed_official 573:ad23fe03a082 203 #define MPU_REGION_SIZE_64B ((uint8_t)0x05)
mbed_official 573:ad23fe03a082 204 #define MPU_REGION_SIZE_128B ((uint8_t)0x06)
mbed_official 573:ad23fe03a082 205 #define MPU_REGION_SIZE_256B ((uint8_t)0x07)
mbed_official 573:ad23fe03a082 206 #define MPU_REGION_SIZE_512B ((uint8_t)0x08)
mbed_official 573:ad23fe03a082 207 #define MPU_REGION_SIZE_1KB ((uint8_t)0x09)
mbed_official 573:ad23fe03a082 208 #define MPU_REGION_SIZE_2KB ((uint8_t)0x0A)
mbed_official 573:ad23fe03a082 209 #define MPU_REGION_SIZE_4KB ((uint8_t)0x0B)
mbed_official 573:ad23fe03a082 210 #define MPU_REGION_SIZE_8KB ((uint8_t)0x0C)
mbed_official 573:ad23fe03a082 211 #define MPU_REGION_SIZE_16KB ((uint8_t)0x0D)
mbed_official 573:ad23fe03a082 212 #define MPU_REGION_SIZE_32KB ((uint8_t)0x0E)
mbed_official 573:ad23fe03a082 213 #define MPU_REGION_SIZE_64KB ((uint8_t)0x0F)
mbed_official 573:ad23fe03a082 214 #define MPU_REGION_SIZE_128KB ((uint8_t)0x10)
mbed_official 573:ad23fe03a082 215 #define MPU_REGION_SIZE_256KB ((uint8_t)0x11)
mbed_official 573:ad23fe03a082 216 #define MPU_REGION_SIZE_512KB ((uint8_t)0x12)
mbed_official 573:ad23fe03a082 217 #define MPU_REGION_SIZE_1MB ((uint8_t)0x13)
mbed_official 573:ad23fe03a082 218 #define MPU_REGION_SIZE_2MB ((uint8_t)0x14)
mbed_official 573:ad23fe03a082 219 #define MPU_REGION_SIZE_4MB ((uint8_t)0x15)
mbed_official 573:ad23fe03a082 220 #define MPU_REGION_SIZE_8MB ((uint8_t)0x16)
mbed_official 573:ad23fe03a082 221 #define MPU_REGION_SIZE_16MB ((uint8_t)0x17)
mbed_official 573:ad23fe03a082 222 #define MPU_REGION_SIZE_32MB ((uint8_t)0x18)
mbed_official 573:ad23fe03a082 223 #define MPU_REGION_SIZE_64MB ((uint8_t)0x19)
mbed_official 573:ad23fe03a082 224 #define MPU_REGION_SIZE_128MB ((uint8_t)0x1A)
mbed_official 573:ad23fe03a082 225 #define MPU_REGION_SIZE_256MB ((uint8_t)0x1B)
mbed_official 573:ad23fe03a082 226 #define MPU_REGION_SIZE_512MB ((uint8_t)0x1C)
mbed_official 573:ad23fe03a082 227 #define MPU_REGION_SIZE_1GB ((uint8_t)0x1D)
mbed_official 573:ad23fe03a082 228 #define MPU_REGION_SIZE_2GB ((uint8_t)0x1E)
mbed_official 573:ad23fe03a082 229 #define MPU_REGION_SIZE_4GB ((uint8_t)0x1F)
mbed_official 573:ad23fe03a082 230 /**
mbed_official 573:ad23fe03a082 231 * @}
mbed_official 573:ad23fe03a082 232 */
mbed_official 573:ad23fe03a082 233
mbed_official 573:ad23fe03a082 234 /** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes
mbed_official 573:ad23fe03a082 235 * @{
mbed_official 573:ad23fe03a082 236 */
mbed_official 573:ad23fe03a082 237 #define MPU_REGION_NO_ACCESS ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 238 #define MPU_REGION_PRIV_RW ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 239 #define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02)
mbed_official 573:ad23fe03a082 240 #define MPU_REGION_FULL_ACCESS ((uint8_t)0x03)
mbed_official 573:ad23fe03a082 241 #define MPU_REGION_PRIV_RO ((uint8_t)0x05)
mbed_official 573:ad23fe03a082 242 #define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06)
mbed_official 573:ad23fe03a082 243 /**
mbed_official 573:ad23fe03a082 244 * @}
mbed_official 573:ad23fe03a082 245 */
mbed_official 573:ad23fe03a082 246
mbed_official 573:ad23fe03a082 247 /** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number
mbed_official 573:ad23fe03a082 248 * @{
mbed_official 573:ad23fe03a082 249 */
mbed_official 573:ad23fe03a082 250 #define MPU_REGION_NUMBER0 ((uint8_t)0x00)
mbed_official 573:ad23fe03a082 251 #define MPU_REGION_NUMBER1 ((uint8_t)0x01)
mbed_official 573:ad23fe03a082 252 #define MPU_REGION_NUMBER2 ((uint8_t)0x02)
mbed_official 573:ad23fe03a082 253 #define MPU_REGION_NUMBER3 ((uint8_t)0x03)
mbed_official 573:ad23fe03a082 254 #define MPU_REGION_NUMBER4 ((uint8_t)0x04)
mbed_official 573:ad23fe03a082 255 #define MPU_REGION_NUMBER5 ((uint8_t)0x05)
mbed_official 573:ad23fe03a082 256 #define MPU_REGION_NUMBER6 ((uint8_t)0x06)
mbed_official 573:ad23fe03a082 257 #define MPU_REGION_NUMBER7 ((uint8_t)0x07)
mbed_official 573:ad23fe03a082 258 /**
mbed_official 573:ad23fe03a082 259 * @}
mbed_official 573:ad23fe03a082 260 */
mbed_official 573:ad23fe03a082 261 #endif /* __MPU_PRESENT */
mbed_official 573:ad23fe03a082 262
mbed_official 573:ad23fe03a082 263 /**
mbed_official 573:ad23fe03a082 264 * @}
mbed_official 573:ad23fe03a082 265 */
mbed_official 573:ad23fe03a082 266
mbed_official 573:ad23fe03a082 267
mbed_official 573:ad23fe03a082 268 /* Exported Macros -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 269 /** @defgroup CORTEX_Exported_Macros CORTEX Exported Macros
mbed_official 573:ad23fe03a082 270 * @{
mbed_official 573:ad23fe03a082 271 */
mbed_official 573:ad23fe03a082 272
mbed_official 573:ad23fe03a082 273 /** @brief Configures the SysTick clock source.
mbed_official 573:ad23fe03a082 274 * @param __CLKSRC__: specifies the SysTick clock source.
mbed_official 573:ad23fe03a082 275 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 276 * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.
mbed_official 573:ad23fe03a082 277 * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.
mbed_official 573:ad23fe03a082 278 * @retval None
mbed_official 573:ad23fe03a082 279 */
mbed_official 573:ad23fe03a082 280 #define __HAL_CORTEX_SYSTICKCLK_CONFIG(__CLKSRC__) \
mbed_official 573:ad23fe03a082 281 do { \
mbed_official 573:ad23fe03a082 282 if ((__CLKSRC__) == SYSTICK_CLKSOURCE_HCLK) \
mbed_official 573:ad23fe03a082 283 { \
mbed_official 573:ad23fe03a082 284 SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK; \
mbed_official 573:ad23fe03a082 285 } \
mbed_official 573:ad23fe03a082 286 else \
mbed_official 573:ad23fe03a082 287 SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK; \
mbed_official 573:ad23fe03a082 288 } while(0)
mbed_official 573:ad23fe03a082 289 /**
mbed_official 573:ad23fe03a082 290 * @}
mbed_official 573:ad23fe03a082 291 */
mbed_official 573:ad23fe03a082 292
mbed_official 573:ad23fe03a082 293 /* Exported functions --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 294 /** @addtogroup CORTEX_Exported_Functions
mbed_official 573:ad23fe03a082 295 * @{
mbed_official 573:ad23fe03a082 296 */
mbed_official 573:ad23fe03a082 297
mbed_official 573:ad23fe03a082 298 /** @addtogroup CORTEX_Exported_Functions_Group1
mbed_official 573:ad23fe03a082 299 * @{
mbed_official 573:ad23fe03a082 300 */
mbed_official 573:ad23fe03a082 301 /* Initialization and de-initialization functions *****************************/
mbed_official 573:ad23fe03a082 302 void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);
mbed_official 573:ad23fe03a082 303 void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);
mbed_official 573:ad23fe03a082 304 void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 305 void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 306 void HAL_NVIC_SystemReset(void);
mbed_official 573:ad23fe03a082 307 uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb);
mbed_official 573:ad23fe03a082 308 /**
mbed_official 573:ad23fe03a082 309 * @}
mbed_official 573:ad23fe03a082 310 */
mbed_official 573:ad23fe03a082 311
mbed_official 573:ad23fe03a082 312 /** @addtogroup CORTEX_Exported_Functions_Group2
mbed_official 573:ad23fe03a082 313 * @{
mbed_official 573:ad23fe03a082 314 */
mbed_official 573:ad23fe03a082 315 /* Peripheral Control functions ***********************************************/
mbed_official 573:ad23fe03a082 316 #if (__MPU_PRESENT == 1)
mbed_official 573:ad23fe03a082 317 void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init);
mbed_official 573:ad23fe03a082 318 #endif /* __MPU_PRESENT */
mbed_official 573:ad23fe03a082 319 uint32_t HAL_NVIC_GetPriorityGrouping(void);
mbed_official 573:ad23fe03a082 320 void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority);
mbed_official 573:ad23fe03a082 321 uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 322 void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 323 void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 324 uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn);
mbed_official 573:ad23fe03a082 325 void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource);
mbed_official 573:ad23fe03a082 326 void HAL_SYSTICK_IRQHandler(void);
mbed_official 573:ad23fe03a082 327 void HAL_SYSTICK_Callback(void);
mbed_official 573:ad23fe03a082 328 /**
mbed_official 573:ad23fe03a082 329 * @}
mbed_official 573:ad23fe03a082 330 */
mbed_official 573:ad23fe03a082 331
mbed_official 573:ad23fe03a082 332 /**
mbed_official 573:ad23fe03a082 333 * @}
mbed_official 573:ad23fe03a082 334 */
mbed_official 573:ad23fe03a082 335
mbed_official 573:ad23fe03a082 336 /* Private types -------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 337 /* Private variables ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 338 /* Private constants ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 339 /* Private macros ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 340 /** @defgroup CORTEX_Private_Macros CORTEX Private Macros
mbed_official 573:ad23fe03a082 341 * @{
mbed_official 573:ad23fe03a082 342 */
mbed_official 573:ad23fe03a082 343 #define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \
mbed_official 573:ad23fe03a082 344 ((GROUP) == NVIC_PRIORITYGROUP_1) || \
mbed_official 573:ad23fe03a082 345 ((GROUP) == NVIC_PRIORITYGROUP_2) || \
mbed_official 573:ad23fe03a082 346 ((GROUP) == NVIC_PRIORITYGROUP_3) || \
mbed_official 573:ad23fe03a082 347 ((GROUP) == NVIC_PRIORITYGROUP_4))
mbed_official 573:ad23fe03a082 348
mbed_official 573:ad23fe03a082 349 #define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10)
mbed_official 573:ad23fe03a082 350
mbed_official 573:ad23fe03a082 351 #define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10)
mbed_official 573:ad23fe03a082 352
mbed_official 573:ad23fe03a082 353 #define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00)
mbed_official 573:ad23fe03a082 354
mbed_official 573:ad23fe03a082 355 #define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \
mbed_official 573:ad23fe03a082 356 ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8))
mbed_official 573:ad23fe03a082 357
mbed_official 573:ad23fe03a082 358 #if (__MPU_PRESENT == 1)
mbed_official 573:ad23fe03a082 359 #define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \
mbed_official 573:ad23fe03a082 360 ((STATE) == MPU_REGION_DISABLE))
mbed_official 573:ad23fe03a082 361
mbed_official 573:ad23fe03a082 362 #define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \
mbed_official 573:ad23fe03a082 363 ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE))
mbed_official 573:ad23fe03a082 364
mbed_official 573:ad23fe03a082 365 #define IS_MPU_ACCESS_SHAREABLE(STATE) (((STATE) == MPU_ACCESS_SHAREABLE) || \
mbed_official 573:ad23fe03a082 366 ((STATE) == MPU_ACCESS_NOT_SHAREABLE))
mbed_official 573:ad23fe03a082 367
mbed_official 573:ad23fe03a082 368 #define IS_MPU_ACCESS_CACHEABLE(STATE) (((STATE) == MPU_ACCESS_CACHEABLE) || \
mbed_official 573:ad23fe03a082 369 ((STATE) == MPU_ACCESS_NOT_CACHEABLE))
mbed_official 573:ad23fe03a082 370
mbed_official 573:ad23fe03a082 371 #define IS_MPU_ACCESS_BUFFERABLE(STATE) (((STATE) == MPU_ACCESS_BUFFERABLE) || \
mbed_official 573:ad23fe03a082 372 ((STATE) == MPU_ACCESS_NOT_BUFFERABLE))
mbed_official 573:ad23fe03a082 373
mbed_official 573:ad23fe03a082 374 #define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0) || \
mbed_official 573:ad23fe03a082 375 ((TYPE) == MPU_TEX_LEVEL1) || \
mbed_official 573:ad23fe03a082 376 ((TYPE) == MPU_TEX_LEVEL2))
mbed_official 573:ad23fe03a082 377
mbed_official 573:ad23fe03a082 378 #define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS) || \
mbed_official 573:ad23fe03a082 379 ((TYPE) == MPU_REGION_PRIV_RW) || \
mbed_official 573:ad23fe03a082 380 ((TYPE) == MPU_REGION_PRIV_RW_URO) || \
mbed_official 573:ad23fe03a082 381 ((TYPE) == MPU_REGION_FULL_ACCESS) || \
mbed_official 573:ad23fe03a082 382 ((TYPE) == MPU_REGION_PRIV_RO) || \
mbed_official 573:ad23fe03a082 383 ((TYPE) == MPU_REGION_PRIV_RO_URO))
mbed_official 573:ad23fe03a082 384
mbed_official 573:ad23fe03a082 385 #define IS_MPU_REGION_NUMBER(NUMBER) (((NUMBER) == MPU_REGION_NUMBER0) || \
mbed_official 573:ad23fe03a082 386 ((NUMBER) == MPU_REGION_NUMBER1) || \
mbed_official 573:ad23fe03a082 387 ((NUMBER) == MPU_REGION_NUMBER2) || \
mbed_official 573:ad23fe03a082 388 ((NUMBER) == MPU_REGION_NUMBER3) || \
mbed_official 573:ad23fe03a082 389 ((NUMBER) == MPU_REGION_NUMBER4) || \
mbed_official 573:ad23fe03a082 390 ((NUMBER) == MPU_REGION_NUMBER5) || \
mbed_official 573:ad23fe03a082 391 ((NUMBER) == MPU_REGION_NUMBER6) || \
mbed_official 573:ad23fe03a082 392 ((NUMBER) == MPU_REGION_NUMBER7))
mbed_official 573:ad23fe03a082 393
mbed_official 573:ad23fe03a082 394 #define IS_MPU_REGION_SIZE(SIZE) (((SIZE) == MPU_REGION_SIZE_32B) || \
mbed_official 573:ad23fe03a082 395 ((SIZE) == MPU_REGION_SIZE_64B) || \
mbed_official 573:ad23fe03a082 396 ((SIZE) == MPU_REGION_SIZE_128B) || \
mbed_official 573:ad23fe03a082 397 ((SIZE) == MPU_REGION_SIZE_256B) || \
mbed_official 573:ad23fe03a082 398 ((SIZE) == MPU_REGION_SIZE_512B) || \
mbed_official 573:ad23fe03a082 399 ((SIZE) == MPU_REGION_SIZE_1KB) || \
mbed_official 573:ad23fe03a082 400 ((SIZE) == MPU_REGION_SIZE_2KB) || \
mbed_official 573:ad23fe03a082 401 ((SIZE) == MPU_REGION_SIZE_4KB) || \
mbed_official 573:ad23fe03a082 402 ((SIZE) == MPU_REGION_SIZE_8KB) || \
mbed_official 573:ad23fe03a082 403 ((SIZE) == MPU_REGION_SIZE_16KB) || \
mbed_official 573:ad23fe03a082 404 ((SIZE) == MPU_REGION_SIZE_32KB) || \
mbed_official 573:ad23fe03a082 405 ((SIZE) == MPU_REGION_SIZE_64KB) || \
mbed_official 573:ad23fe03a082 406 ((SIZE) == MPU_REGION_SIZE_128KB) || \
mbed_official 573:ad23fe03a082 407 ((SIZE) == MPU_REGION_SIZE_256KB) || \
mbed_official 573:ad23fe03a082 408 ((SIZE) == MPU_REGION_SIZE_512KB) || \
mbed_official 573:ad23fe03a082 409 ((SIZE) == MPU_REGION_SIZE_1MB) || \
mbed_official 573:ad23fe03a082 410 ((SIZE) == MPU_REGION_SIZE_2MB) || \
mbed_official 573:ad23fe03a082 411 ((SIZE) == MPU_REGION_SIZE_4MB) || \
mbed_official 573:ad23fe03a082 412 ((SIZE) == MPU_REGION_SIZE_8MB) || \
mbed_official 573:ad23fe03a082 413 ((SIZE) == MPU_REGION_SIZE_16MB) || \
mbed_official 573:ad23fe03a082 414 ((SIZE) == MPU_REGION_SIZE_32MB) || \
mbed_official 573:ad23fe03a082 415 ((SIZE) == MPU_REGION_SIZE_64MB) || \
mbed_official 573:ad23fe03a082 416 ((SIZE) == MPU_REGION_SIZE_128MB) || \
mbed_official 573:ad23fe03a082 417 ((SIZE) == MPU_REGION_SIZE_256MB) || \
mbed_official 573:ad23fe03a082 418 ((SIZE) == MPU_REGION_SIZE_512MB) || \
mbed_official 573:ad23fe03a082 419 ((SIZE) == MPU_REGION_SIZE_1GB) || \
mbed_official 573:ad23fe03a082 420 ((SIZE) == MPU_REGION_SIZE_2GB) || \
mbed_official 573:ad23fe03a082 421 ((SIZE) == MPU_REGION_SIZE_4GB))
mbed_official 573:ad23fe03a082 422
mbed_official 573:ad23fe03a082 423 #define IS_MPU_SUB_REGION_DISABLE(SUBREGION) ((SUBREGION) < (uint16_t)0x00FF)
mbed_official 573:ad23fe03a082 424 #endif /* __MPU_PRESENT */
mbed_official 573:ad23fe03a082 425
mbed_official 573:ad23fe03a082 426 /**
mbed_official 573:ad23fe03a082 427 * @}
mbed_official 573:ad23fe03a082 428 */
mbed_official 573:ad23fe03a082 429
mbed_official 573:ad23fe03a082 430 /* Private functions ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 431 /** @defgroup CORTEX_Private_Functions CORTEX Private Functions
mbed_official 573:ad23fe03a082 432 * @brief CORTEX private functions
mbed_official 573:ad23fe03a082 433 * @{
mbed_official 573:ad23fe03a082 434 */
mbed_official 573:ad23fe03a082 435
mbed_official 573:ad23fe03a082 436 #if (__MPU_PRESENT == 1)
mbed_official 573:ad23fe03a082 437 /**
mbed_official 573:ad23fe03a082 438 * @brief Disables the MPU
mbed_official 573:ad23fe03a082 439 * @retval None
mbed_official 573:ad23fe03a082 440 */
mbed_official 573:ad23fe03a082 441 __STATIC_INLINE void HAL_MPU_Disable(void)
mbed_official 573:ad23fe03a082 442 {
mbed_official 573:ad23fe03a082 443 /* Disable fault exceptions */
mbed_official 573:ad23fe03a082 444 SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;
mbed_official 573:ad23fe03a082 445
mbed_official 573:ad23fe03a082 446 /* Disable the MPU */
mbed_official 573:ad23fe03a082 447 MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk;
mbed_official 573:ad23fe03a082 448 }
mbed_official 573:ad23fe03a082 449
mbed_official 573:ad23fe03a082 450 /**
mbed_official 573:ad23fe03a082 451 * @brief Enables the MPU
mbed_official 573:ad23fe03a082 452 * @param MPU_Control: Specifies the control mode of the MPU during hard fault,
mbed_official 573:ad23fe03a082 453 * NMI, FAULTMASK and privileged access to the default memory
mbed_official 573:ad23fe03a082 454 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 455 * @arg MPU_HFNMI_PRIVDEF_NONE
mbed_official 573:ad23fe03a082 456 * @arg MPU_HARDFAULT_NMI
mbed_official 573:ad23fe03a082 457 * @arg MPU_PRIVILEGED_DEFAULT
mbed_official 573:ad23fe03a082 458 * @arg MPU_HFNMI_PRIVDEF
mbed_official 573:ad23fe03a082 459 * @retval None
mbed_official 573:ad23fe03a082 460 */
mbed_official 573:ad23fe03a082 461 __STATIC_INLINE void HAL_MPU_Enable(uint32_t MPU_Control)
mbed_official 573:ad23fe03a082 462 {
mbed_official 573:ad23fe03a082 463 /* Enable the MPU */
mbed_official 573:ad23fe03a082 464 MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;
mbed_official 573:ad23fe03a082 465
mbed_official 573:ad23fe03a082 466 /* Enable fault exceptions */
mbed_official 573:ad23fe03a082 467 SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;
mbed_official 573:ad23fe03a082 468 }
mbed_official 573:ad23fe03a082 469 #endif /* __MPU_PRESENT */
mbed_official 573:ad23fe03a082 470
mbed_official 573:ad23fe03a082 471 /**
mbed_official 573:ad23fe03a082 472 * @}
mbed_official 573:ad23fe03a082 473 */
mbed_official 573:ad23fe03a082 474
mbed_official 573:ad23fe03a082 475 /**
mbed_official 573:ad23fe03a082 476 * @}
mbed_official 573:ad23fe03a082 477 */
mbed_official 573:ad23fe03a082 478
mbed_official 573:ad23fe03a082 479 /**
mbed_official 573:ad23fe03a082 480 * @}
mbed_official 573:ad23fe03a082 481 */
mbed_official 573:ad23fe03a082 482
mbed_official 573:ad23fe03a082 483 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 484 }
mbed_official 573:ad23fe03a082 485 #endif
mbed_official 573:ad23fe03a082 486
mbed_official 573:ad23fe03a082 487 #endif /* __STM32F7xx_HAL_CORTEX_H */
mbed_official 573:ad23fe03a082 488
mbed_official 573:ad23fe03a082 489
mbed_official 573:ad23fe03a082 490 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/