|
STM32G474xx HAL用户手册
|
CORTEX HAL模块驱动程序。此文件提供固件函数来管理CORTEX的以下功能:+ 初始化和配置函数 + 外设控制功能。 更多...
#include "stm32g4xx_hal.h"函数 | |
| void | HAL_NVIC_SetPriorityGrouping (uint32_t PriorityGroup) |
| 使用所需的解锁序列设置优先级分组字段(抢占优先级和子优先级)。 | |
| void | HAL_NVIC_SetPriority (IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) |
| 设置中断的优先级。 | |
| void | HAL_NVIC_EnableIRQ (IRQn_Type IRQn) |
| 在NVIC中断控制器中启用特定设备的中断。 | |
| void | HAL_NVIC_DisableIRQ (IRQn_Type IRQn) |
| 在NVIC中断控制器中禁用特定设备的中断。 | |
| void | HAL_NVIC_SystemReset (void) |
| 发起系统复位请求以复位MCU。 | |
| uint32_t | HAL_SYSTICK_Config (uint32_t TicksNumb) |
| 初始化系统定时器并启用中断,启动系统Tick定时器(SysTick):计数器处于自由运行模式以产生周期性中断。 | |
| uint32_t | HAL_NVIC_GetPriorityGrouping (void) |
| 从NVIC中断控制器获取优先级分组字段。 | |
| void | HAL_NVIC_GetPriority (IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority) |
| 获取中断的优先级。 | |
| void | HAL_NVIC_SetPendingIRQ (IRQn_Type IRQn) |
| 设置外部中断的挂起位。 | |
| uint32_t | HAL_NVIC_GetPendingIRQ (IRQn_Type IRQn) |
| 获取挂起中断(读取NVIC中的挂起寄存器并返回指定中断的挂起位)。 | |
| void | HAL_NVIC_ClearPendingIRQ (IRQn_Type IRQn) |
| 清除外部中断的挂起位。 | |
| uint32_t | HAL_NVIC_GetActive (IRQn_Type IRQn) |
| 获取活动中断(读取NVIC中的活动寄存器并返回活动位)。 | |
| void | HAL_SYSTICK_CLKSourceConfig (uint32_t CLKSource) |
| 配置SysTick时钟源。 | |
| void | HAL_SYSTICK_IRQHandler (void) |
| 处理SysTick中断请求。 | |
| __weak void | HAL_SYSTICK_Callback (void) |
| SysTick回调。 | |
| void | HAL_MPU_Enable (uint32_t MPU_Control) |
| 启用MPU。 | |
| void | HAL_MPU_Disable (void) |
| 禁用MPU。 | |
| void | HAL_MPU_EnableRegion (uint32_t RegionNumber) |
| 启用MPU区域。 | |
| void | HAL_MPU_DisableRegion (uint32_t RegionNumber) |
| 禁用MPU区域。 | |
| void | HAL_MPU_ConfigRegion (MPU_Region_InitTypeDef *MPU_Init) |
| 初始化和配置要保护的区域和内存。 | |
CORTEX HAL模块驱动程序。此文件提供固件函数来管理CORTEX的以下功能:+ 初始化和配置函数 + 外设控制功能。
版权所有 (c) 2019 STMicroelectronics。保留所有权利。
本软件根据LICENSE文件中的条款获得许可,该文件位于本软件组件的根目录中。如果本软件未附带LICENSE文件,则按原样提供。
==============================================================================
##### 如何使用此驱动程序 #####
==============================================================================
[..]
*** 如何使用CORTEX HAL驱动程序配置中断 ***
===========================================================
[..]
本节提供用于配置NVIC中断(IRQ)的函数。
Cortex-M4异常由CMSIS函数管理。
(#) 使用HAL_NVIC_SetPriorityGrouping()函数配置NVIC优先级分组。
(#) 使用HAL_NVIC_SetPriority()配置所选IRQ通道的优先级。
(#) 使用HAL_NVIC_EnableIRQ()启用所选IRQ通道。
-@- 当选择NVIC_PRIORITYGROUP_0时,将无法进行IRQ抢占。
挂起IRQ优先级将仅由子优先级管理。
-@- IRQ优先级顺序(按从高到低排序):
(+@) 最低抢占优先级
(+@) 最低子优先级
(+@) 最低硬件优先级(IRQ编号)
[..]
*** 如何使用CORTEX HAL驱动程序配置SysTick ***
========================================================
[..]
为时基设置SysTick定时器。
(+) HAL_SYSTICK_Config()函数调用SysTick_Config()函数,这是CMSIS函数,它:
(++) 使用作为函数参数传递的值配置SysTick重载寄存器。
(++) 将SysTick IRQ优先级配置为最低值(0x0F)。
(++) 重置SysTick计数器寄存器。
(++) 将SysTick计数器时钟源配置为核心时钟源(HCLK)。
(++) 启用SysTick中断。
(++) 启动SysTick计数器。
(+) 您可以在HAL_SYSTICK_Config()函数调用后,通过调用宏
__HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8)
将SysTick时钟源更改为HCLK_Div8。__HAL_CORTEX_SYSTICKCLK_CONFIG()宏定义在stm32g4xx_hal_cortex.h文件中。
(+) 您可以在HAL_SYSTICK_Config()函数调用后,通过调用
HAL_NVIC_SetPriority(SysTick_IRQn,...)函数来更改SysTick IRQ优先级。
HAL_NVIC_SetPriority()调用NVIC_SetPriority()函数,这是CMSIS函数。
(+) 要调整SysTick时基,请使用以下公式:
重载值 = SysTick计数器时钟(Hz)× desired Time base(s)
(++) 重载值是传递给HAL_SYSTICK_Config()函数的参数
(++) 重载值不应超过0xFFFFFF
下表给出了根据HAL_NVIC_SetPriorityGrouping()函数配置的优先级分组设置所允许的抢占优先级和子优先级的值。
========================================================================================================================== NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | 描述 ========================================================================================================================== NVIC_PRIORITYGROUP_0 | 0 | 0-15 | 0位用于抢占优先级 | | | 4位用于子优先级 -------------------------------------------------------------------------------------------------------------------------- NVIC_PRIORITYGROUP_1 | 0-1 | 0-7 | 1位用于抢占优先级 | | | 3位用于子优先级 -------------------------------------------------------------------------------------------------------------------------- NVIC_PRIORITYGROUP_2 | 0-3 | 0-3 | 2位用于抢占优先级 | | | 2位用于子优先级 -------------------------------------------------------------------------------------------------------------------------- NVIC_PRIORITYGROUP_3 | 0-7 | 0-1 | 3位用于抢占优先级 | | | 1位用于子优先级 -------------------------------------------------------------------------------------------------------------------------- NVIC_PRIORITYGROUP_4 | 0-15 | 0 | 4位用于抢占优先级 | | | 0位用于子优先级 ==========================================================================================================================
定义于文件stm32g4xx_hal_cortex.c中。
1.7.6.1