浅谈位掩码(BitMask)的运用

您所在的位置:网站首页 mask意思 浅谈位掩码(BitMask)的运用

浅谈位掩码(BitMask)的运用

2024-07-10 17:23| 来源: 网络整理| 查看: 265

浅谈位掩码(BitMask)的运用

最近移植别人的代码,发现别人老是会用到掩码,着实看不懂,后来稍微学习了一下,现在有所心得,整理一下,大家共勉。

讲位掩码原理之前,先谈一谈我遇到位掩码的情况。我移植的是嵌入式程序(STM32程序),里面使用一个8位变量,来控制多个状态。比如: 在这里插入图片描述 他使用了一个8位量,去控制3个状态位:X、Y、Z三轴的限制为状态。这样就不必使用三个八位变量去配置这三个轴的状态。

所以,下面进行一些总结: 1、位掩码的使用是为了控制一些bool值(开关量)。比如:电机正反转、led亮灭。 2、用一个母体(我自己起的名字啊,非官方),自己定义的一个8位变量(下面会介绍),可以控制8个相关的开关量,如果用16位的变量,可以控制16个。这样,既节省内存,而且方便统一管理。

为了能使用掩码,我们需要提前定义一些操作函数: 掩码相关函数 我们先一个一个介绍这些函数:(大神们可以跳过这一段) 1、bit(n) (10000 1000b 该八位数据的第零位没有用,(也可以从第零位开始,没特别大区别)。 最后那个LIMIT_MASK是统一管理, LIMIT_MASK------------->0000 1110b,当你需要判断是否存在轴超限时,不用每个轴一个一个判断,直接用LIMIT_MASK判断即可。只能知道是否有超限,并不知道哪个轴超限,之后可以继续再判断到底是哪个轴超限。(算是一个小技巧吧) 2、需要定义个一个母体来进行存放信息。 母体是8位,则最多可以存放8个开关量;母体也可以定义16位,或者32位。 母体一般最后加个 “_mask” ,这样知道是对应的掩码,比如:axis_limit_mask ,就可以很直接的知道是轴限制掩码。

整体知识如上吧,大家一起加油,冲冲冲!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3