打印

stm32外中断冲突求助

[复制链接]
1466|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clz918|  楼主 | 2012-12-7 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相关代码如下 ,PC5,PB15两个引脚连接同一个脉冲,两个中断都有丢失的情况,如果单独测试,每个脉冲都会产生中断,如果是优先级的问题,应该是中断有先后,但不会丢失啊,在500左右频率时几乎只有一个IO口产生中断,另一个偶尔才会有中断,大家帮忙分析一下,谢谢
  void Exti_int()
         {
          RCC->APB2ENR|=1<<0; //开启辅助时钟

          Ex_NVIC_Config(GPIO_C,9,FTIR);  //PC9 IN1/X0
          Ex_NVIC_Config(GPIO_B,10,FTIR); //PB10 IN2/X1


          Ex_NVIC_Config(GPIO_B,15,FTIR);  //PB15 IN7/X6
          Ex_NVIC_Config(GPIO_C,5,FTIR);  //PC5 IN8/X7

          MY_NVIC_Init(2,2,EXTI9_5_IRQChannel,2);         //x0,x7
          MY_NVIC_Init(1,2,EXTI15_10_IRQChannel,2);  //x6,x1

         }

void EXTI9_5_IRQHandler(void)
      {
      if (EXTI->PR & (1<<9))
        {
             //x0==================================                    
              
             //======================================
         EXTI->PR |= (1<<9);                        
        }                        
      if (EXTI->PR & (1<<5))
        {  
                 EXTI->PR |= (1<<5);   
        //x7=================================
              out2++;
                clz_cnt++;
                        clz_flag=1;
            //==================================
        }
        }
   void EXTI15_10_IRQHandler(void)
       {                        
       if (EXTI->PR & (1<<10))
         {   
         //X1======================================                    
               
             //=========================================
          EXTI->PR |= (1<<10);                        
         }  
                  if (EXTI->PR & (1<<15))
         {  
                   EXTI->PR |= (1<<15);
         //X6======================================
                out1++;
                  clz_cnt--;        
                  clz_flag=1;
             //=========================================
                                 
         }     
       }

相关帖子

沙发
uet_cache| | 2012-12-7 19:40 | 只看该作者
最好不要仿真,可以用指示灯观察是否进中断。中断频率进的多了,会影响其它中断的执行,也就是你的一个脉冲周期,要保证两个中断函数都可以顺利执行完,才能使信号变化。你可以换个方法试试,比如两者频率相同,但有相位差。或者把其它中断全部关掉。只开这两个中断。你上面的情况,理应是高级中断函数影响它了。

使用特权

评论回复
板凳
clz918|  楼主 | 2012-12-8 08:43 | 只看该作者
现在程序只有三个中断,除这两个另一个是发脉冲(500hz)的定时中断,而且这两个中断内的语句已经很短了(见代码),感觉象高级中断函数影响低级中断,但即便如此,低级中断稍后也应该产生,而不是根本就不响应

使用特权

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

本版积分规则

111

主题

336

帖子

3

粉丝