2245|1

406

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

stm32事件中断 [复制链接]

本帖最后由 青城山下 于 2018-1-22 18:24 编辑

变量CurrntStatus是从UART口收到的数据,假设第10s的时候收到的数据是0,则执行函数的最下面部分的falt_light函数,但是如果在第11秒执行falt_light函数的时候,从UART串口收到的数据是1,我想从falt_light跳出来,立即去执行CurrntStatus==1下面的指令,请问该怎么处理好呢?


  1. void light_carmaker(){
  2.          int i =0 ;
  3.                  if(Flag==1)
  4.                 return;

  5.         if(CurrntStatus == 2){         
  6.                 ControlYellowLigh();  //控制和发送黄灯的状态
  7.         }
  8.         else if(CurrntStatus == 3){

  9.             GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8);
  10.                GPIO_SetBits(GPIOB,GPIO_Pin_6);//南北绿灯亮SN秒,东西红灯亮SN秒
  11.             GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5是状态指示灯和南北绿灯的状态是一致的
  12.                 delay_ms(1000);
  13.         }
  14.         else if(CurrntStatus == 1){

  15.              GPIO_ResetBits(GPIOB,GPIO_Pin_6);//关闭南北绿灯,东西红灯亮
  16.             GPIO_ResetBits(GPIOB,GPIO_Pin_5);//状态指示灯LED2和南北的绿灯亮灭保持一致                        
  17.             GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);//给高电平,关其他方向的灯
  18.         GPIO_SetBits(GPIOB,GPIO_Pin_8);         //东西绿灯亮EW秒,南北红灯亮EW秒        
  19.                 delay_ms(1000);

  20.         }
  21.          else if(CurrntStatus == 0){

  22.                 falt_light();


  23.         }
  24. }


  25. void falt_light(){
  26.              //PB6连接的是南北绿东西红灯  PB7接的是黄灯 PB8接的是南北红东西绿灯
  27.          GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8);//给高电平,关其他方向的灯
  28.          GPIO_ResetBits(GPIOB,GPIO_Pin_5); //先让状态指示灯灭

  29.      snblu1=5;
  30.          ewblu1=5;

  31.          path = 0;
  32.          w = 0;
  33.          for(i=1;i<=snblu1;i++)
  34.          {  
  35.          if(Flag==1)
  36.                 return;
  37.         
  38.          GPIO_SetBits(GPIOB,GPIO_Pin_6);//南北绿灯亮SN秒,东西红灯亮SN秒
  39.          GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5是状态指示灯和南北绿灯的状态是一致的
  40.          if(Flag==1)
  41.                 return;
  42.          delay_ms(1000);  //延时1s
  43.          }
  44.          
  45.          if(Flag==1)
  46.                 return;
  47.         GPIO_ResetBits(GPIOB,GPIO_Pin_6);//关闭南北绿灯,东西红灯亮
  48.         GPIO_ResetBits(GPIOB,GPIO_Pin_5);//状态指示灯LED2和南北的绿灯亮灭保持一致

  49.                                                                            
  50.         GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_6);//给高电平,关其他方向的灯  
  51.         for(i=1;i<=ewblu1;i++)
  52.                 {         
  53.                                 if(Flag==1)
  54.                 return;

  55.                   GPIO_SetBits(GPIOB,GPIO_Pin_8);         //东西绿灯亮EW秒,南北红灯亮EW秒        
  56.                                         if(Flag==1)
  57.                 return;
  58.                   delay_ms(1000);
  59.                 }
  60.         GPIO_ResetBits(GPIOB,GPIO_Pin_8);//灭东西绿灯
  61. }
复制代码

                                                                           


此帖出自stm32/stm8论坛

最新回复

弄一个逻辑式把决定动作的条件都加进去,根据条件进执行函数,你这么加点再加点不是办法.  详情 回复 发表于 2018-1-22 19:31
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
弄一个逻辑式把决定动作的条件都加进去,根据条件进执行函数,你这么加点再加点不是办法.
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表