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


相关文章
|
7月前
|
C语言
C语言操作符逻辑与,逻辑或面试真题(2)
C语言操作符逻辑与,逻辑或面试真题(2)
|
21天前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
62 7
|
22天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
3月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
241 88
|
24天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
41 2
|
2月前
|
编译器 C语言 C++
【C语言】精妙运用内存函数:深入底层逻辑的探索
【C语言】精妙运用内存函数:深入底层逻辑的探索
|
6月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
6月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
55 3
|
6月前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
44 1
|
6月前
|
C语言
C语言中的赋值运算、比较运算和逻辑运算详解
C语言中的赋值运算、比较运算和逻辑运算详解
119 0