打印

两个线中断相互打断问题

[复制链接]
406|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你画我瞎|  楼主 | 2020-4-26 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
vi, ic, ST, TI, ni
中断配置如下:

  NVIC_InitTypeDef NVIC_InitStructure;
//key4中断优先级配置
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);                                                                                                         
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;   
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 10;   
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;              
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
//key5中断优先级配置
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;         
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;              
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);                                   


中断处理程序:
EXTI_Line9:
        //key4
        if ( EXTI_GetITStatus(EXTI_Line9) != RESET )
        {
                EXTI_ClearITPendingBit(EXTI_Line9);
                while(isToPause && !isToResume){
                        RGB_yellow();
                        RGB1_red();
                        int cnt = 5000000;
                        while(cnt --);
                        RGB1_yellow();
                        RGB_red();
                        cnt = 5000000;
                        while(cnt --);
                        printf("key4 is Pressed\r\n");
                        if(isToResume) break;
                }
            //printf("key4 is Press\r\n");
        }

EXTI_Line15:
//key5
        if (EXTI_GetITStatus(EXTI_Line15) != RESET)
        {
                EXTI_ClearITPendingBit(EXTI_Line15);
                isToResume = 1;
                while(1){
                        int cnt = 5000000;
                        while(cnt --);
                        printf("key5 Button is Press\r\n");
                }
        }


如果中断优先级生效的话,key5应该是可以打断key4的,debug中看NVIC中断优先级key5是高于key4的,但是实际操作中不能实现效果,请问有哪位知道这是为什么,怎么才能实现想要的效果??

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

395

主题

395

帖子

0

粉丝