网站建设域名未拿到,pc端设计网站,大棚网站怎么做,宁波网站设计制作文章目录HAL_NVIC_SetPriority()#xff1a;设置中断优先级HAL_NVIC_EnableIRQ()#xff1a;使能中断结束HAL_NVIC_SetPriority()#xff1a;设置中断优先级
HAL_NVIC_SetPriority()函数是一个用于设置中断优先级的函数#xff0c;其定义如下#xff1a;
void HAL_NVIC_…
文章目录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 库中的一个函数用于使能 NVICNested 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);
}需要注意的是该函数只负责使能中断线不会对中断服务函数进行注册或配置。在使用该函数之前需要先通过其他手段配置好对应中断线的优先级。
结束
如果对你有帮助点赞支持一下吧。 转载联系作者。