执行操作时候只执行一次的标志位逻辑实现(C语言)

简介: 执行操作时候只执行一次的标志位逻辑实现(C语言)

背景说明

在做stm32的时候,使用的是前后台的裸机逻辑,没有使用实际的操作系统,而在while循环中,获取到上位机的指令后,需要进行相应的操作,实现操作很简单,但是要保证得到该指令后只能执行一次相应的操作,这就需要使用一个标志位来实现这个功能加以保证,虽然逻辑简单,但是在我初次接触嵌入式和C语音的时候也花了一番力气。借此掘金的征文比赛,予以记录。


实现逻辑

解析中在接收到上位机的指令后,执行操作,处置标志位flag 执行循环中,通过read_Auto_value_flag保证执行一次EEPROM操作。执行一次后就置为1


代码实例

下面是以按键控制的操作中,保证eeprom设备只读写一次的操作。


//1————————进入图像自动模式设置

if(KEY4_count==2)

{
                        Q1=1;
                        if(KEY1_flag)//+
                        {
                                 read_Auto_value_flag= 0;
                                 //标志位处置0
                                 L1++;
                                 if(L1>2)
                                    L1=0;
                        }
                        if(KEY2_flag)//-
                        {
                                 read_Auto_value_flag= 0;
                                 L1--;
                                 if(L1<0)
                                           L1=2;
                        }       
                        if (L1>2)
                                    L1=0;
                        if(L1<0)
                                           L1=2;
                        if(0== read_Auto_value_flag)
                        {
                                 read_Auto_value_flag= 1;
                                   //标志位处置1
                                 EEPROM_DataBuff[0]= L1;//自动 0、1、2对应值1、2、3???
                                 EEPROM_WriteBuffer(AUTO_VAL,EEPROM_DataBuff,1);      //一次将多个参数保存
                                 delay_ms(50);
                                 IR_ReadParameter_EEPROM();
                                 if(L1==1)
                                           SetCameraValue(11,10,1);//发送亮度优化
                                 else
                                           SetCameraValue(11,10,3);//直方图
                                 delay_ms(50);
                                 if(L3==255)
                                 {
                                           SetCameraValue1(1,4,0xfe);//增益
                                 }else
                                 {
                                           SetCameraValue1(1,4,L3);//增益
                                 }
                                 delay_ms(50);
                                 if(L1!= 1)
                                 {                                   
                                           if(L4== 255)
                                           {
                                                    SetCameraValue1(0,5,0xfe);//亮度
                                           }else
                                           {
                                                    SetCameraValue1(0,5,L4);//亮度
                                           }
                                           delay_ms(50); 
                                 }
                        }                                                      
                        KEY1_count=0;
                        KEY2_count=0;                           
               }


相关文章
|
1月前
|
C语言
C语言操作符逻辑与,逻辑或面试真题(2)
C语言操作符逻辑与,逻辑或面试真题(2)
|
10天前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
16 3
|
10天前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
17 1
|
17天前
|
C语言
C语言中的逻辑运算符和逻辑表达式
C语言中的逻辑运算符和逻辑表达式
18 0
|
1月前
|
C语言
条件操作符和逻辑操作符(C语言零基础教程)
条件操作符和逻辑操作符(C语言零基础教程)
|
1月前
|
C语言
C语言中逻辑表达式的深入探讨
C语言中逻辑表达式的深入探讨
27 0
|
1月前
|
C语言
C语言的逻辑表达式
C语言的逻辑表达式
66 1
|
1月前
|
C语言
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
27 0
|
10月前
|
编译器 C语言 C++
【C语言】 操作符(上): -- 算数 -- 移位 -- 位操作符 -- 赋值 -- 单目 -- 关系 -- 逻辑操作符2
【C语言】 操作符(上): -- 算数 -- 移位 -- 位操作符 -- 赋值 -- 单目 -- 关系 -- 逻辑操作符2
|
8月前
|
存储 算法 C语言
《信任的进化》游戏简易版逻辑算法的实现(C语言)
《信任的进化》游戏简易版逻辑算法的实现(C语言)