mbed library sources

Dependents:   Marvino mbot

Fork of mbed-src by mbed official

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****/