野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12365|回复: 1

STM32中断优先级问题

[复制链接]
发表于 2019-2-25 14:56:54 | 显示全部楼层 |阅读模式
最近在学习中断,“如果抢占优先级相同,响应优先级低的中断服务函数正在进行时,得到一个响应优先级高的中断请求,那么低的不会被高的打断”,想请问一下这句话对不对,这是在网上看到的,可是我写了个程序测试了一下,结果是低的仍然会被高的打断,非常不解,我不知道是网上写错了,还是自己的程序有误。
  • 程序是三个按键中断---

            按下按键1,LED1亮灭状态翻转,并且串口顺序输出1,2,3;
            按下按键2,LED2亮灭状态翻转,并且串口顺序输出4,5,6;
            按下按键3,LED1和LED2亮灭状态同时翻转,并且串口顺序输出7,8,9;
  • 我是这么设定的,抢占优先级:按键1>按键2=按键3 | 响应优先级:按键2>按键3 。
  • 那么按说应该是:按键1中断请求可以打断按键2和按键3的中断服务函数,而按键2与按键3的抢占优先级相同,不会有打断情况。


  • 可是实验结果是:按键1打断另外两个按键的中断服务函数这没问题;可我按下按键2,会打断按键3的中断服务函数。想问一下就应该如此还是说网上写的有问题。



麻烦给看看程序有什么问题么,这个是配置NVIC和按键1的中断服务函数(按键1、2、3中断服务函数几乎相同),整个程序太长了我就没都粘贴过来,如有需要附件里是整个程序,请各位看看,谢谢了:



static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* 配置为组2 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  
  /* 配置中断源:按键1*/
  NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;
  /*抢占优先级 */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  /* 子优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  /*使能 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
  /* 配置中断源:按键2*/
  NVIC_InitStructure.NVIC_IRQChannel = KEY2_INT_EXTI_IRQ;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_Init(&NVIC_InitStructure);


void KEY1_IRQHandler(void)
{
        char i;
        if(EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET)
        {
                SysTick_Delay_Ms(50);
                if(EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET)
                {
                        for(i=1;i<=3;i++)
                        {
                                LED1_TOGGLE;/*灯状态翻转*/
                                Usart_SendString( DEBUG_USARTx, &i);/*串口输出数字*/
                                SysTick_Delay_Ms(2500);
                        }
                        EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE);
                           

                }
        }               
}



RVMDK(uv5).rar (18.3 KB, 下载次数: 8)


回复

使用道具 举报

发表于 2019-2-26 09:02:35 | 显示全部楼层
抢占优先级可以抢占低优先级的中断,网上说的有问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 15:38 , Processed in 0.041062 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表