执行操作时候只执行一次的标志位逻辑实现(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;                           
               }


相关文章
|
5月前
|
C语言
C语言操作符逻辑与,逻辑或面试真题(2)
C语言操作符逻辑与,逻辑或面试真题(2)
|
22天前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
193 88
|
4月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
4月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
40 3
|
4月前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
32 1
|
4月前
|
C语言
C语言中的赋值运算、比较运算和逻辑运算详解
C语言中的赋值运算、比较运算和逻辑运算详解
|
5月前
|
C语言
C语言中的逻辑运算符和逻辑表达式
C语言中的逻辑运算符和逻辑表达式
67 0
|
5月前
|
C语言
条件操作符和逻辑操作符(C语言零基础教程)
条件操作符和逻辑操作符(C语言零基础教程)
|
5月前
|
C语言
C语言中逻辑表达式的深入探讨
C语言中逻辑表达式的深入探讨
92 0
|
5月前
|
C语言
C语言的逻辑表达式
C语言的逻辑表达式
106 1