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