OpenEdv-开源电子网

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

有关STM32F103编程标志位的退出问题:如何让上面的那段函数System_Sta.s.Vent_Flag = FLAG_ON?我的标志位已经加了还是没进入

[复制链接]

21

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2019-5-12
在线时间
168 小时
发表于 2019-8-15 23:11:47 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 hejun96 于 2019-8-31 08:48 编辑

      
        if(scold==1 && child==1)   //按下冷水键和童锁键10s处于排气过程      (问题点???)
        {
                System_Sta.s.Drain_Self_Cmd = FLAG_OFF;
                                
               
                System_Sta.s.Vent_Flag = FLAG_ON;
                //System_Sta.s.Vent_Flag = FLAG_ON;
                //System_Data.Cold_Water_G_Tick = 0;//
                //System_Sta.s.Cold_Water_G_Flag = FLAG_OFF;
               
               
                //System_Data.Normal_Water_H_Tick = 0;               
                //System_Sta.s.Normal_Water_H_Flag = FLAG_OFF;
               
                i2cWriteBuffer1(AT24C02_ADDR,AT24C02_REG,sizeof(SAVE_DATA_UNION),(u8*)&Save_Data);/*写入数据*/
        
               
               
                for (int i = 0; i < sizeof(STA_UNION); i++)
                {
                        System_Sta.sta = 0;
                }
        
                memset((void *)(&System_Data),0,sizeof(DATA_STRUCT));
                                
                System_Sta.s.beep_timer_flag = TIMER_RUN;
                Block_Timer(50);//阻塞时间50ms
                System_Sta.s.beep_timer_flag = TIMER_RESET;
                Block_Timer(200);//阻塞时间200ms
                System_Sta.s.beep_timer_flag = TIMER_RUN;
                Block_Timer(50);//阻塞时间50ms
                System_Sta.s.beep_timer_flag = TIMER_RESET;
                Block_Timer(200);//阻塞时间200ms
                System_Sta.s.beep_timer_flag = TIMER_RUN;
                Block_Timer(50);//阻塞时间50ms
                System_Sta.s.beep_timer_flag = TIMER_RESET;

        }                        
               


void Vent_Work(void)
{
  if(FLAG_ON == System_Sta.s.Vent_Flag)//排气状态打开
                {
                        //长按童锁和冷水键进入排气过程,排气过程是先打开G, G打开200ms后打开H,
                        //H阀打开3min(待定)关闭温水阀放水阀H,关闭H的200ms后关闭冷水放水阀G。

                        System_Sta.s.Vent_Flag = FLAG_OFF;


                        Set_ColdWaterValue_G(Bit_SET);
                        if(gTick - G_Tick > 200 && statu == 0)//冷水阀G打开200ms标志状态
                        {
                                G_Tick = gTick;
                                statu = 1;
                                Set_NormalWaterValue_H(Bit_SET);
                                if(gTick - H_On_Tick > 3*60*1000 && statu == 1)//阀H打开3min
                                {
                                        H_On_Tick = gTick;
                                        statu = 2;
                                        Set_NormalWaterValue_H(Bit_RESET);
                                        if(gTick - H_Off_Tick > 200 && statu == 2)
                                        {
                                                H_Off_Tick = gTick;
                                                statu = 3;
                                                Set_ColdWaterValue_G(Bit_RESET);
                                        }

                                }

                        }



                }



}












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

使用道具 举报

21

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2019-5-12
在线时间
168 小时
 楼主| 发表于 2019-8-16 08:39:03 | 显示全部楼层
在VentWork函数中VentFlag这个标志位没有起到打开标志位的作用,但是在上面的if循环体中我把这个标志位FlagOn,可是打开标志位后本应该进入到VentWork函数中结果却没有
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 10:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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