OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2217|回复: 0

请教大家,中断进入以后,biaozhi1++;怎么加很多个

[复制链接]

16

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2019-9-1
在线时间
61 小时
发表于 2019-12-28 19:18:00 | 显示全部楼层 |阅读模式
void EXTI9_5_IRQHandler(void)
{
//上行传感器中断                               
       
if((EXTI_GetITStatus(EXTI_Line9) != RESET)&&(mark==1))
{       
         TIM_Cmd(TIM2, ENABLE);  //开定时器2//开定时器
        biaozhi1++;        
         if(biaozhi1>3)
         {
//                 delay_ms(100);//延时
                         TIM_Cmd(TIM2, DISABLE);  //关闭定时器2,取消误触发
                        TIM_SetCounter(TIM2, 0);//定时器2清零
                  TIM_SetCounter(TIM3, 0);//定时器3清零                       
                        TIM_Cmd(TIM3, ENABLE);  //使能TIM3        开定时器3.延时3分钟
                        key=2;
         }
        EXTI_ClearITPendingBit(EXTI_Line9);  //清除EXTI9线路挂起位         
}
else EXTI_ClearITPendingBit(EXTI_Line9);  //清除EXTI9线路挂起
//

请大家看上面的中断程序,需求是,中断一次,biaozhi1加1,在5秒钟之内中断三次以上,进入if,执行if里面的语句,现在的情况是中断一次,就进入if执行里面的语句了,biaozhi1已在其他处置零,开机就这样的,如果把biaozhi1屏蔽掉,if里面的语句是不执行的,请问大家,这个中断里biaozhi1++;这个,为什么会循环加1,是哪里的问题,请大咖赐教,biaozhi1已在其他处清零
以下是做过的实验,
1,biaozhi1>3,biaozhi1<3,biaozhi1=3,这三种情况都试过,都是触发一次,就执行了if
2,biaozhi1++;这句屏蔽掉,中断多少次,都不能执行if,
3,biaozhi1>300,这种情况,执行不了if,biaozhi1>30,可以多次中断后执行if,

这个中断函数里的另一个端口,完全正常,但这两部分的配置,程序语句都一样的

请大家帮忙解决

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 17:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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