1 STM32中断没有子优先级?-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32中断没有子优先级?

strongerHuang 来源:strongerHuang 2023-10-17 15:50 次阅读

看到一个交流群在讨论关于【关于STM32中断优先级的话题】,其中就有小伙伴提到:为什么有些STM32中断没有【子优先级 比如,有时候你在使用STM32CubeMX配置时,你会发现只有Preemption Priority【抢占优先级】,而没有Sub Priority【次优先级】:

7d0e0e70-6cc1-11ee-939d-92fbcf53809c.png

然而,有时候你会发现又有Sub Priority【次优先级】:

7d157caa-6cc1-11ee-939d-92fbcf53809c.png

这个问题就牵涉到STM32,准确的来说的是 Cortex-M NVIC嵌套向量中断控制器的问题。

下面就展开来说说关于ARM单片机NVIC的内容。

关于Cortex-M的NVIC

NVIC:Nested Vectored Interrupt Controller,嵌套向量中断控制器。 在每个Cortex-M内核中都有这么一个NVIC嵌套向量中断控制器,当MCU使用的内核不同,其中的NVIC也可能不同。 比如,Cortex-M0和Cortex-M3内核中NVIC功能就不同 其中,中断优先级分组功能就不同。 Cortex-M0的NVIC没有优先级分组功能,Cortex-M3、 M4、M7有分组功能。7d1d290a-6cc1-11ee-939d-92fbcf53809c.jpg  所以,你在使用STM32CubeMX配置时,M0/M0+内核的STM32是没有【次优先级】那个选项的。 Cortex-M0包含STM32F0、L0、G0等处理器 对底层感兴趣的朋友可以继续往下看。

NVIC寄存器

NVIC寄存器,需查看对应的内核(Cortex-M)手册,在ARM官网能找到M3也有对应的中文翻译版,大家可以自己网上搜索 内核中的寄存器和我们STM32参考手册中寄存器一样,不同的Bit位代表含义不同。 但是,对于NVIC来说,由于包含众多优先级相关配置,寄存器数量相对较多(NVIC寄存器族7d2acdc6-6cc1-11ee-939d-92fbcf53809c.jpg    拿M3来说,优先级分组的配置,位于NVIC的AIRCR应用程序中断及复位控制寄存器中:7d32380e-6cc1-11ee-939d-92fbcf53809c.jpg  这里推荐阅读之前我写过的一篇文章:Cortex-M中断在RTOS中的应用及注意事项

中断入口

额外提下一个小伙伴问的问题:为什么外部中断8和9都使用同一个中断?
void EXTI9_5_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line8) != RESET)
  {
    /* 代码 */
    EXTI_ClearITPendingBit(EXTI_Line8);
  }
  if(EXTI_GetITStatus(EXTI_Line9) != RESET)
  {
    /* 代码 */
    EXTI_ClearITPendingBit(EXTI_Line9);
  }
}
我想,这个问题应该不难。好比一个main程序入口,进入之后需要处理很多事情,只是在里面需要区分事件。 很多外设中断,都会使用同一个中断入口,有一个原因:节约中断入口资源分配 像USART发送和接收中断,TIM不同通道捕获中断等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350968
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177798
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355713
收藏 人收藏

    评论

    相关推荐

    freertos中断优先级在哪设置

    FreeRTOS是一个流行的实时操作系统,它广泛应用于嵌入式系统开发。在FreeRTOS中断优先级是一个重要的概念,因为它决定了中断处理的顺序和响应时间。 1. 理解
    的头像 发表于 09-02 14:17 635次阅读

    ESP32S2如何设置中断优先级

    ESP32S2有六中断, 如何设置中断优先级? 比如在GPIO例程里 ,这种中断优先级是如何设
    发表于 06-21 07:59

    请问有什么方法降低WIFI中断优先级

    因为项目对时序输出要求比较严格,WIFI中断优先级比硬件定时器中断优先级要高,在定时器中断里面对GPIO管脚控制被延长执行,请问有什么方法降
    发表于 06-19 07:37

    systick的中断优先级是否应该设置为最高优先级的嵌套中断

    最近在学习ucosii有这样一个疑问,关于stm32的systick作为ucosii的基准时钟,systick的中断优先级是否应该设置为最高优先级的嵌套
    发表于 05-16 06:44

    stm32中断优先级分组了之后还能改分组吗?

    如标题所示,stm32中断优先级分组了之后还能改分组吗? 比如我要使用外部中断EXIT2,3,我在配置的时候配置了优先级分组2组,然后配
    发表于 05-13 08:40

    请问stm32f030R8的中断优先级分组如何设置?

    官方的库函数没有中断优先级分组的函数 查阅了M0的手册也没有找到SCB->AIRCR寄存器详细的说明
    发表于 05-13 07:43

    STM8中断优先级不够怎么解决?

    STM8L 中断优先级通过下面函数设置,但此处仅 ITC_PriorityLevel_1,ITC_PriorityLevel_2,ITC_PriorityLevel_3总共才3个中断
    发表于 05-06 06:54

    求助,关于stm32F4中断优先级0无法抢占的问题求解

    抢占优先级具有最高优先级别。 现在我使用两个定时器: 1)TIM2设置优先级为0,TIM4设置优先级为1 2)若先启动TIM4,延时一下再启动TIM2(为了先触发定时器4
    发表于 04-23 07:26

    如何测试STM32中断抢占,为何优先级高的定时器2居然一次都抢不到中断了呢?

    个位大佬你们是如何测试STM32中断抢占的,我的测试步骤如下:第一步、我配置了两个定时器,定时器2优先级为3,定时器3优先级为4, 第二步、我各自测试都可以发生
    发表于 04-22 06:31

    stm32f401和max31855通过spi通讯,没有将spi的相关中断优先级置于最高级就会死机的原因?

    stm32f401和热电偶芯片max31855通过spi通讯,如果没有将spi的相关中断优先级置于最高优先级,程序运行几秒后就会死机,将sp
    发表于 03-28 09:14

    STM32F103的寄存器NVIC_IPRx抢占优先级优先级是怎么设置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,抢占优先级优先级是怎么设置的? 如果,中断分组2,抢占
    发表于 03-27 07:48

    Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?

    请问大佬,Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?看网上的帖子说中断
    发表于 02-27 06:13

    M0516中断优先级怎么设置?

    新唐M0516中断优先级的设置,有没有示例,没找到相关接口,谢谢!
    发表于 01-16 07:25

    GD32如何配置中断优先级分组以及中断优先级

    使用GD32 MCU的过程,大家可能会有以下疑问:中断优先级如何配置和使用?
    的头像 发表于 01-10 10:30 3055次阅读
    GD32如何配置<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>分组以及<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>

    stm32中断怎么处理的

    STM32是一款非常强大的微控制器系列,具有丰富的外设和功能。中断STM32非常重要的部分,能够帮助我们提高系统的响应速度和效率。本文将详细介绍
    的头像 发表于 01-02 17:35 2566次阅读