stm32f103执行完清除更新中断的语句后,直接跳到中断结尾,不执行判断捕获输入中断是否发生的if语句

2019-10-15 20:23发布

        if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
        {       
                TIM_ClearITPendingBit(TIM3,TIM_IT_Update)
        }
   else if(TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)
        {
               
执行完红 {MOD}语句后,不执行蓝 {MOD}语句,直接跳到中断结尾去了。硬件输入端没问题,有信号输入。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-10-15 20:43
说明判断语句不符合!检查你的状态判断是否正确
madao14751
2楼-- · 2019-10-16 00:11
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;  
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;  
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;  
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  
  TIM_ICInitStructure.TIM_ICFilter = 0x1;  

  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);  
  TIM_Cmd(TIM3, ENABLE);  
  TIM_ITConfig(TIM3, TIM_IT_CC1 | TIM_IT_CC2, ENABLE);  
不死鸟
3楼-- · 2019-10-16 00:55
你把else去掉试试,else if的意思本身就是不满足上一个if条件才进入本次条件判断,如果上一个if的条件满足了,那么就不会执行else if的条件判断了。
madao14751
4楼-- · 2019-10-16 01:21
不死鸟 发表于 2016-12-29 10:19
你把else去掉试试,else if的意思本身就是不满足上一个if条件才进入本次条件判断,如果上一个if的条件满足 ...

不行,还是不执行
noparkinghere
5楼-- · 2019-10-16 05:46
 精彩回答 2  元偷偷看……
不死鸟
6楼-- · 2019-10-16 06:49
madao14751 发表于 2016-12-29 10:21
不行,还是不执行

调换一下两个if的顺序,看看反过来会不会执行。

一周热门 更多>