中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()

这篇具有很好参考价值的文章主要介绍了中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HAL_NVIC_SetPriority():设置中断优先级

HAL_NVIC_SetPriority()函数是一个用于设置中断优先级的函数,其定义如下:

void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);

其中,参数含义如下:

  • IRQn:指定要设置优先级的中断号,类型为IRQn_Type,定义在stm32f4xx.h头文件中;
  • PreemptPriority:指定抢占优先级,取值范围为0~15,其中0表示最高优先级,15表示最低优先级;
  • SubPriority:指定响应优先级,取值范围为0~15,其中0表示最高优先级,15表示最低优先级。
    函数作用:

该函数用于设置指定中断的抢占优先级和响应优先级,这两个优先级共同决定了中断的优先级。在中断发生时,系统会优先处理优先级高的中断,如果有多个中断的优先级相同,则按照优先级高低的顺序依次处理。

要使用 HAL_NVIC_SetPriority(),您需要提供中断号和优先级作为参数。 例如,要设置 EXTI 线路 0 的中断优先级,您可以使用以下代码:

HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);

在这个例子中,第一个参数是中断号(EXTI0_IRQn),第二个参数是抢占优先级(0),第三个参数是子优先级(0)。

请注意,可以根据系统要求配置不同的优先级。 因此,对于中断优先级配置的细节,参考具体微控制器的参考手册是很重要的。

HAL_NVIC_EnableIRQ():使能中断

HAL_NVIC_EnableIRQ() 函数是 STM32 HAL 库中的一个函数,用于使能 NVIC(Nested Vector Interrupt Controller)中特定的中断线。

函数原型为:

void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);

其中,IRQn 参数为需要使能的中断线对应的枚举类型。

函数作用是将 IRQn 对应的中断线的中断使能位设置为 1,从而使该中断线的中断能够被触发。

以下是该函数的详细讲解,附带中文注释:

/**
  * @brief  使能指定的中断线
  * @param  IRQn: 中断线对应的枚举类型
  * @retval 无
  */
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
{
  /* 对于 Cortex-M 系列的处理器,NVIC 的寄存器可以通过内存映射的方式访问 */
  /* NVIC_ISER 寄存器用于使能中断线,其每个位对应一个中断线,设置为 1 表示对应的中断线使能 */
  /* IRQn 是一个枚举类型,其值对应了中断线的编号,可以直接作为 NVIC_ISER 寄存器中的位偏移量 */
  /* 在 STM32 HAL 库中,使用了 CMSIS 标准库提供的宏来访问 NVIC_ISER 寄存器 */
  /* 以下语句等价于 NVIC->ISER[IRQn >> 5] = (uint32_t)(1 << (IRQn & 0x1F)); */
  /* 该语句将 IRQn 对应的中断线的中断使能位设置为 1,从而使该中断线的中断能够被触发 */
  __HAL_NVIC_ENABLE_IRQ(IRQn);
}

需要注意的是,该函数只负责使能中断线,不会对中断服务函数进行注册或配置。在使用该函数之前,需要先通过其他手段配置好对应中断线的优先级。

结束

如果对你有帮助,点赞支持一下吧。
转载联系作者。文章来源地址https://www.toymoban.com/news/detail-731485.html

到了这里,关于中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

    一、先说明中断分组的由来 中断优先级分组表: 优先级分组 抢占优先级 响应优先级 bit[7:4] 分配情况 备注 NVIC_PriorityGroup_0 取值:0 取值:0~15 0:4 0bit抢占优先级、4bit响应优先级 NVIC_PriorityGroup_1 取值:0~1 取值:0~7 1:3 1bit抢占优先级、3bit响应优先级 NVIC_PriorityGroup_2 取值:0~3

    2024年02月04日
    浏览(42)
  • STM32 HAL库 中断处理中使用延时函数(HAL_Delay)

    今天在学习STM32 HAL库外部中断,使用的是按键触发外部中断,想在外部中断里面写一个按键消抖,也就是在HAL库外部中断处理函数中使用了HAL_Delay() 函数,后来经过实验,在外部中断处理函数(void EXTI1_IRQHandler(void))和中断回调函数(void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin))里面都

    2024年03月16日
    浏览(46)
  • STM32cubeIDE HAL库中断服务函数解读

    以stm32f103为例 在开启一个中断后,首先会在stm32f1xx_it.c找到自动生成的中断处理函数,这里是TIM1产生的定时器中断:  这个函数又调用了 stm32f1xx_hal_tim.c 中的 HAL_TIM_IRQHandler(htim1),这个htim1是通用定时器的结构体,其定义为 这个结构体的意义可以参考第25章 STM32F429的TIM定时器

    2024年02月02日
    浏览(68)
  • STM32 HAL库的串口中断服务函数详解

    最近在实现利用上位机通过串口发送指令给下位机执行操作的实验,在之前学习串口的过程中我就一直有一个疑惑,那就是为什么在串口中断回调函数内除了要加上自己的操作以外还要在末尾再执行一次 接收中断 ,在查阅了一些资料后我才发现原来和 中断服务函数 有关 我

    2024年02月10日
    浏览(43)
  • 【STM32】中断与NVIC以外部中断为例

    在stm32中姑且可以认为,异常就是中断 单片机上电之后,首先执行启动文件,开辟堆栈之后,开始初始化中断向量表。 NVIC NVIC是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是 内核 里面的一个外设。 ####三个寄存器 ISER 、 ICER 和 IP NVIC 结构体

    2024年02月10日
    浏览(40)
  • STM32 HAL库常用GPIO函数以及外部中断配置与响应流程

    Hello,大家好,这是我第一篇博客,写的不好请大家包涵指教,话不多说直接看内容: HAL库常用GPIO函数: void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init) 这个函数主要用来初始化我们需要用到的引脚,设置其工作频率、工作模式、上下拉等参数。如果使用CubeMX配置工程

    2024年02月03日
    浏览(46)
  • 第六步:NVIC中断优先级分组

     CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。 STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分。 STM32F40xx/STM32F41xx总共有92个中断。 STM32F42xx/STM32F43xx则总共有96个中断  STM32F40xx/STM32F41xx的92个中断里面,包括1

    2024年02月12日
    浏览(44)
  • STM32CubeMX-HAL库-UART串口接收中断回调函数代码分析

            CubeMx中HAL库函数的调用不同于库函数调用,在学习CubeMx串口通信时,不理解HAL库中的回调函数是怎么被调用的,于是查看每个的定义,参考其他人写的博客,总算弄明白了HAL库中断调用与库函数不同之处。写下这篇博客一是加深自己的理解,二是希望对不理解HA

    2024年02月02日
    浏览(56)
  • STM32 中断NVIC详解,配置及示例

             NVIC 全称 Nested Vectored Controller 嵌套向量中断控制器         它是一种硬件设备,用于管理和协调处理器的中断请求。NVIC可以管理多个中断请求,并按优先级处理它们。当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序,以便及时

    2024年02月03日
    浏览(42)
  • CubeMX生成的中断函数HAL_UART_IRQHandler(*huart1)如何使用。

    串口发送/接收函数 HAL_UART_Transmit();串口发送数据,使用超时管理机制  HAL_UART_Receive();串口接收数据,使用超时管理机制 HAL_UART_Transmit_IT();串口中断模式发送   HAL_UART_Receive_IT();串口中断模式接收 HAL_UART_Transmit_DMA();串口DMA模式发送 HAL_UART_Transmit_DMA();串口DMA模式接收 串口中断函

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包