STM32L4xx_HAL_Driver  1.14.0
Peripheral Control functions

Cortex control functions. More...

Functions

uint32_t HAL_NVIC_GetPriorityGrouping (void)
 Get the priority grouping field from the NVIC Interrupt Controller. More...
 
void HAL_NVIC_GetPriority (IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)
 Get the priority of an interrupt. More...
 
uint32_t HAL_NVIC_GetPendingIRQ (IRQn_Type IRQn)
 Get Pending Interrupt (read the pending register in the NVIC and return the pending bit for the specified interrupt). More...
 
void HAL_NVIC_SetPendingIRQ (IRQn_Type IRQn)
 Set Pending bit of an external interrupt. More...
 
void HAL_NVIC_ClearPendingIRQ (IRQn_Type IRQn)
 Clear the pending bit of an external interrupt. More...
 
uint32_t HAL_NVIC_GetActive (IRQn_Type IRQn)
 Get active interrupt (read the active register in NVIC and return the active bit). More...
 
void HAL_SYSTICK_CLKSourceConfig (uint32_t CLKSource)
 Configure the SysTick clock source. More...
 
void HAL_SYSTICK_IRQHandler (void)
 Handle SYSTICK interrupt request. More...
 
void HAL_SYSTICK_Callback (void)
 SYSTICK callback. More...
 
void HAL_MPU_Enable (uint32_t MPU_Control)
 Enable the MPU. More...
 
void HAL_MPU_Disable (void)
 Disable the MPU. More...
 
void HAL_MPU_ConfigRegion (MPU_Region_InitTypeDef *MPU_Init)
 Initialize and configure the Region and the memory to be protected. More...
 

Detailed Description

Cortex control functions.

  ==============================================================================
                      ##### Peripheral Control functions #####
  ==============================================================================
    [..]
      This subsection provides a set of functions allowing to control the CORTEX
      (NVIC, SYSTICK, MPU) functionalities.

Function Documentation

◆ HAL_MPU_ConfigRegion()

void HAL_MPU_ConfigRegion ( MPU_Region_InitTypeDef *  MPU_Init)

Initialize and configure the Region and the memory to be protected.

Parameters
MPU_InitPointer to a MPU_Region_InitTypeDef structure that contains the initialization and configuration information.
Return values
None

Definition at line 466 of file stm32l4xx_hal_cortex.c.

467 {
468  /* Check the parameters */
469  assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));
470  assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));
471 
472  /* Set the Region number */
473  MPU->RNR = MPU_Init->Number;
474 
475  if ((MPU_Init->Enable) != RESET)
476  {
477  /* Check the parameters */
478  assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));
479  assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));
480  assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));
481  assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));
482  assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));
483  assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));
484  assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));
485  assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));
486 
487  MPU->RBAR = MPU_Init->BaseAddress;
488  MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) |
489  ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) |
490  ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) |
491  ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) |
492  ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) |
493  ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) |
494  ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) |
495  ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) |
496  ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos);
497  }
498  else
499  {
500  MPU->RBAR = 0x00;
501  MPU->RASR = 0x00;
502  }
503 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_MPU_Disable()

void HAL_MPU_Disable ( void  )

Disable the MPU.

Return values
None

Definition at line 424 of file stm32l4xx_hal_cortex.c.

425 {
426  /* Make sure outstanding transfers are done */
427  __DMB();
428 
429  /* Disable fault exceptions */
430  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;
431 
432  /* Disable the MPU and clear the control register*/
433  MPU->CTRL = 0U;
434 }

◆ HAL_MPU_Enable()

void HAL_MPU_Enable ( uint32_t  MPU_Control)

Enable the MPU.

Parameters
MPU_ControlSpecifies the control mode of the MPU during hard fault, NMI, FAULTMASK and privileged accessto the default memory This parameter can be one of the following values:
  • MPU_HFNMI_PRIVDEF_NONE
  • MPU_HARDFAULT_NMI
  • MPU_PRIVILEGED_DEFAULT
  • MPU_HFNMI_PRIVDEF
Return values
None

Definition at line 447 of file stm32l4xx_hal_cortex.c.

448 {
449  /* Enable the MPU */
450  MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;
451 
452  /* Enable fault exceptions */
453  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;
454 
455  /* Ensure MPU settings take effects */
456  __DSB();
457  __ISB();
458 }

◆ HAL_NVIC_ClearPendingIRQ()

void HAL_NVIC_ClearPendingIRQ ( IRQn_Type  IRQn)

Clear the pending bit of an external interrupt.

Parameters
IRQnExternal interrupt number. This parameter can be an enumerator of IRQn_Type enumeration (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l4xxxx.h))
Return values
None

Definition at line 354 of file stm32l4xx_hal_cortex.c.

355 {
356  /* Check the parameters */
357  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
358 
359  /* Clear pending interrupt */
360  NVIC_ClearPendingIRQ(IRQn);
361 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_NVIC_GetActive()

uint32_t HAL_NVIC_GetActive ( IRQn_Type  IRQn)

Get active interrupt (read the active register in NVIC and return the active bit).

Parameters
IRQnExternal interrupt number This parameter can be an enumerator of IRQn_Type enumeration (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l4xxxx.h))
Return values
status- 0 Interrupt status is not pending.
  • 1 Interrupt status is pending.

Definition at line 371 of file stm32l4xx_hal_cortex.c.

372 {
373  /* Return 1 if active else 0 */
374  return NVIC_GetActive(IRQn);
375 }

◆ HAL_NVIC_GetPendingIRQ()

uint32_t HAL_NVIC_GetPendingIRQ ( IRQn_Type  IRQn)

Get Pending Interrupt (read the pending register in the NVIC and return the pending bit for the specified interrupt).

Parameters
IRQnExternal interrupt number. This parameter can be an enumerator of IRQn_Type enumeration (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l4xxxx.h))
Return values
status- 0 Interrupt status is not pending.
  • 1 Interrupt status is pending.

Definition at line 338 of file stm32l4xx_hal_cortex.c.

339 {
340  /* Check the parameters */
341  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
342 
343  /* Return 1 if pending else 0 */
344  return NVIC_GetPendingIRQ(IRQn);
345 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_NVIC_GetPriority()

void HAL_NVIC_GetPriority ( IRQn_Type  IRQn,
uint32_t  PriorityGroup,
uint32_t *  pPreemptPriority,
uint32_t *  pSubPriority 
)

Get the priority of an interrupt.

Parameters
IRQnExternal interrupt number. This parameter can be an enumerator of IRQn_Type enumeration (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l4xxxx.h))
PriorityGroupthe priority grouping bits length. This parameter can be one of the following values:
  • NVIC_PRIORITYGROUP_0: 0 bit for pre-emption priority, 4 bits for subpriority
  • NVIC_PRIORITYGROUP_1: 1 bit for pre-emption priority, 3 bits for subpriority
  • NVIC_PRIORITYGROUP_2: 2 bits for pre-emption priority, 2 bits for subpriority
  • NVIC_PRIORITYGROUP_3: 3 bits for pre-emption priority, 1 bit for subpriority
  • NVIC_PRIORITYGROUP_4: 4 bits for pre-emption priority, 0 bit for subpriority
pPreemptPriorityPointer on the Preemptive priority value (starting from 0).
pSubPriorityPointer on the Subpriority value (starting from 0).
Return values
None

Definition at line 305 of file stm32l4xx_hal_cortex.c.

306 {
307  /* Check the parameters */
308  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
309  /* Get priority for Cortex-M system or device specific interrupts */
310  NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority);
311 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_NVIC_GetPriorityGrouping()

uint32_t HAL_NVIC_GetPriorityGrouping ( void  )

Get the priority grouping field from the NVIC Interrupt Controller.

Return values
Prioritygrouping field (SCB->AIRCR [10:8] PRIGROUP field)

Definition at line 278 of file stm32l4xx_hal_cortex.c.

279 {
280  /* Get the PRIGROUP[10:8] field value */
281  return NVIC_GetPriorityGrouping();
282 }

◆ HAL_NVIC_SetPendingIRQ()

void HAL_NVIC_SetPendingIRQ ( IRQn_Type  IRQn)

Set Pending bit of an external interrupt.

Parameters
IRQnExternal interrupt number This parameter can be an enumerator of IRQn_Type enumeration (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l4xxxx.h))
Return values
None

Definition at line 320 of file stm32l4xx_hal_cortex.c.

321 {
322  /* Check the parameters */
323  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
324 
325  /* Set interrupt pending */
326  NVIC_SetPendingIRQ(IRQn);
327 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SYSTICK_Callback()

__weak void HAL_SYSTICK_Callback ( void  )

SYSTICK callback.

Return values
None

Definition at line 412 of file stm32l4xx_hal_cortex.c.

413 {
414  /* NOTE : This function should not be modified, when the callback is needed,
415  the HAL_SYSTICK_Callback could be implemented in the user file
416  */
417 }

◆ HAL_SYSTICK_CLKSourceConfig()

void HAL_SYSTICK_CLKSourceConfig ( uint32_t  CLKSource)

Configure the SysTick clock source.

Parameters
CLKSourcespecifies the SysTick clock source. This parameter can be one of the following values:
  • SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.
  • SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.
Return values
None

Definition at line 385 of file stm32l4xx_hal_cortex.c.

386 {
387  /* Check the parameters */
388  assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));
389  if (CLKSource == SYSTICK_CLKSOURCE_HCLK)
390  {
391  SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
392  }
393  else
394  {
395  SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK;
396  }
397 }
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SYSTICK_IRQHandler()

void HAL_SYSTICK_IRQHandler ( void  )

Handle SYSTICK interrupt request.

Return values
None

Definition at line 403 of file stm32l4xx_hal_cortex.c.

404 {
406 }
void HAL_SYSTICK_Callback(void)
SYSTICK callback.