stm32h747/stm32h747i-disco/CM7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c
Go to the documentation of this file.
1 
82 /* Includes ------------------------------------------------------------------*/
83 #include "stm32h7xx_hal.h"
84 
94 #ifdef HAL_CORTEX_MODULE_ENABLED
95 
96 /* Private types -------------------------------------------------------------*/
97 /* Private variables ---------------------------------------------------------*/
98 /* Private constants ---------------------------------------------------------*/
99 /* Private macros ------------------------------------------------------------*/
100 /* Private functions ---------------------------------------------------------*/
101 /* Exported functions --------------------------------------------------------*/
102 
143 void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
144 {
145  /* Check the parameters */
146  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
147 
148  /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
149  NVIC_SetPriorityGrouping(PriorityGroup);
150 }
151 
165 void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
166 {
167  uint32_t prioritygroup;
168 
169  /* Check the parameters */
170  assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
171  assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
172 
173  prioritygroup = NVIC_GetPriorityGrouping();
174 
175  NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
176 }
177 
188 {
189  /* Check the parameters */
191 
192  /* Enable interrupt */
194 }
195 
204 {
205  /* Check the parameters */
207 
208  /* Disable interrupt */
210 }
211 
216 void HAL_NVIC_SystemReset(void)
217 {
218  /* System Reset */
220 }
221 
229 uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
230 {
231  return SysTick_Config(TicksNumb);
232 }
252 #if (__MPU_PRESENT == 1)
253 
257 void HAL_MPU_Disable(void)
258 {
259  /* Make sure outstanding transfers are done */
260  __DMB();
261 
262  /* Disable fault exceptions */
263  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;
264 
265  /* Disable the MPU and clear the control register*/
266  MPU->CTRL = 0;
267 }
268 
280 void HAL_MPU_Enable(uint32_t MPU_Control)
281 {
282  /* Enable the MPU */
283  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;
284 
285  /* Enable fault exceptions */
286  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;
287 
288  /* Ensure MPU setting take effects */
289  __DSB();
290  __ISB();
291 }
298 void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init)
299 {
300  /* Check the parameters */
301  assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));
302  assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));
303 
304  /* Set the Region number */
305  MPU->RNR = MPU_Init->Number;
306 
307  if ((MPU_Init->Enable) != 0UL)
308  {
309  /* Check the parameters */
310  assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));
311  assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));
312  assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));
313  assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));
314  assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));
315  assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));
316  assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));
317  assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));
318 
319  MPU->RBAR = MPU_Init->BaseAddress;
320  MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) |
321  ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) |
322  ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) |
323  ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) |
324  ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) |
325  ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) |
326  ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) |
327  ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) |
328  ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos);
329  }
330  else
331  {
332  MPU->RBAR = 0x00;
333  MPU->RASR = 0x00;
334  }
335 }
336 #endif /* __MPU_PRESENT */
337 
342 uint32_t HAL_NVIC_GetPriorityGrouping(void)
343 {
344  /* Get the PRIGROUP[10:8] field value */
345  return NVIC_GetPriorityGrouping();
346 }
347 
369 void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)
370 {
371  /* Check the parameters */
372  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
373  /* Get priority for Cortex-M system or device specific interrupts */
374  NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority);
375 }
376 
385 {
386  /* Check the parameters */
388 
389  /* Set interrupt pending */
391 }
392 
403 {
404  /* Check the parameters */
406 
407  /* Return 1 if pending else 0 */
408  return NVIC_GetPendingIRQ(IRQn);
409 }
410 
419 {
420  /* Check the parameters */
422 
423  /* Clear pending interrupt */
425 }
426 
436 {
437  /* Check the parameters */
439 
440  /* Return 1 if active else 0 */
441  return NVIC_GetActive(IRQn);
442 }
443 
452 void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource)
453 {
454  /* Check the parameters */
456  if (CLKSource == SYSTICK_CLKSOURCE_HCLK)
457  {
459  }
460  else
461  {
463  }
464 }
465 
470 void HAL_SYSTICK_IRQHandler(void)
471 {
473 }
474 
479 __weak void HAL_SYSTICK_Callback(void)
480 {
481  /* NOTE : This function Should not be modified, when the callback is needed,
482  the HAL_SYSTICK_Callback could be implemented in the user file
483  */
484 }
485 
486 #if defined(DUAL_CORE)
487 
492 uint32_t HAL_GetCurrentCPUID(void)
493 {
494  if (((SCB->CPUID & 0x000000F0U) >> 4 )== 0x7U)
495  {
496  return CM7_CPUID;
497  }
498  else
499  {
500  return CM4_CPUID;
501  }
502 }
503 
504 #else
505 
510 uint32_t HAL_GetCurrentCPUID(void)
511 {
512  return CM7_CPUID;
513 }
514 
515 #endif /*DUAL_CORE*/
516 
524 #endif /* HAL_CORTEX_MODULE_ENABLED */
525 
533 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
SCB
#define SCB
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1778
assert_param
#define assert_param(expr)
Include module's header file.
Definition: stm32f407/stm32f407g-disc1/Inc/stm32f4xx_hal_conf.h:353
NVIC_SetPriorityGrouping
#define NVIC_SetPriorityGrouping
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1826
NVIC_GetPriorityGrouping
#define NVIC_GetPriorityGrouping
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1827
NVIC_GetPendingIRQ
#define NVIC_GetPendingIRQ
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1831
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
IRQn
IRQn
Definition: MIMXRT1052.h:78
NVIC_DecodePriority
__STATIC_INLINE void NVIC_DecodePriority(uint32_t Priority, uint32_t PriorityGroup, uint32_t *const pPreemptPriority, uint32_t *const pSubPriority)
Decode Priority.
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:2106
NVIC_GetPriority
#define NVIC_GetPriority
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1836
__DSB
__STATIC_FORCEINLINE void __DSB(void)
Data Synchronization Barrier.
Definition: imxrt1050/imxrt1050-evkb/CMSIS/cmsis_gcc.h:944
HAL_NVIC_SystemReset
void HAL_NVIC_SystemReset(void)
__ISB
__STATIC_FORCEINLINE void __ISB(void)
Instruction Synchronization Barrier.
Definition: imxrt1050/imxrt1050-evkb/CMSIS/cmsis_gcc.h:933
IS_NVIC_SUB_PRIORITY
#define IS_NVIC_SUB_PRIORITY(PRIORITY)
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:314
HAL_NVIC_DisableIRQ
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
NVIC_ClearPendingIRQ
#define NVIC_ClearPendingIRQ
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1833
SYSTICK_CLKSOURCE_HCLK
#define SYSTICK_CLKSOURCE_HCLK
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:108
IS_NVIC_PREEMPTION_PRIORITY
#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY)
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:312
NVIC_EncodePriority
__STATIC_INLINE uint32_t NVIC_EncodePriority(uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
Encode Priority.
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:2079
HAL_NVIC_GetActive
uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn)
HAL_NVIC_SetPriorityGrouping
void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
HAL_SYSTICK_IRQHandler
void HAL_SYSTICK_IRQHandler(void)
HAL_SYSTICK_Config
uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
HAL_GetCurrentCPUID
uint32_t HAL_GetCurrentCPUID(void)
HAL_NVIC_ClearPendingIRQ
void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn)
NVIC_SystemReset
#define NVIC_SystemReset
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1837
IS_SYSTICK_CLK_SOURCE
#define IS_SYSTICK_CLK_SOURCE(SOURCE)
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:318
IRQn_Type
IRQn_Type
STM32F4XX Interrupt Number Definition, according to the selected device in Library_configuration_sect...
Definition: stm32f407xx.h:66
HAL_SYSTICK_CLKSourceConfig
void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource)
SCB_SHCSR_MEMFAULTENA_Msk
#define SCB_SHCSR_MEMFAULTENA_Msk
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:628
HAL_NVIC_GetPendingIRQ
uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn)
HAL_NVIC_SetPendingIRQ
void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn)
NVIC_DisableIRQ
#define NVIC_DisableIRQ
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1830
IS_NVIC_PRIORITY_GROUP
#define IS_NVIC_PRIORITY_GROUP(GROUP)
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:306
HAL_NVIC_GetPriority
void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)
CM7_CPUID
#define CM7_CPUID
Definition: stm32h735/stm32h735g-dk/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_cortex.h:275
NVIC_SetPendingIRQ
#define NVIC_SetPendingIRQ
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1832
NVIC_SetPriority
#define NVIC_SetPriority
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1835
__DMB
__STATIC_FORCEINLINE void __DMB(void)
Data Memory Barrier.
Definition: imxrt1050/imxrt1050-evkb/CMSIS/cmsis_gcc.h:955
NVIC_GetActive
#define NVIC_GetActive
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1834
NVIC_EnableIRQ
#define NVIC_EnableIRQ
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1828
SysTick
#define SysTick
Definition: imxrt1050/imxrt1050-evkb/CMSIS/core_cm7.h:1779
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
HAL_NVIC_GetPriorityGrouping
uint32_t HAL_NVIC_GetPriorityGrouping(void)
IS_NVIC_DEVICE_IRQ
#define IS_NVIC_DEVICE_IRQ(IRQ)
Definition: stm32f407/stm32f407g-disc1/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h:316
HAL_SYSTICK_Callback
void HAL_SYSTICK_Callback(void)


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:54