xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_bit(位操作)

XTINY 位操作宏集合 更多...

宏定义

#define BIT0   0x00000001UL
#define BIT1   0x00000002UL
#define BIT2   0x00000004UL
#define BIT3   0x00000008UL
#define BIT4   0x00000010UL
#define BIT5   0x00000020UL
#define BIT6   0x00000040UL
#define BIT7   0x00000080UL
#define BIT8   0x00000100UL
#define BIT9   0x00000200UL
#define BIT10   0x00000400UL
#define BIT11   0x00000800UL
#define BIT12   0x00001000UL
#define BIT13   0x00002000UL
#define BIT14   0x00004000UL
#define BIT15   0x00008000UL
#define BIT16   0x00010000UL
#define BIT17   0x00020000UL
#define BIT18   0x00040000UL
#define BIT19   0x00080000UL
#define BIT20   0x00100000UL
#define BIT21   0x00200000UL
#define BIT22   0x00400000UL
#define BIT23   0x00800000UL
#define BIT24   0x01000000UL
#define BIT25   0x02000000UL
#define BIT26   0x04000000UL
#define BIT27   0x08000000UL
#define BIT28   0x10000000UL
#define BIT29   0x20000000UL
#define BIT30   0x40000000UL
#define BIT31   0x80000000UL
#define BIT_IE   (1UL)
#define BIT(n)
#define BIT_GET(src, n)
 获取 src 的 bit_n.
#define BIT_GET_MDF0(src, n)
 获取将 src 的 bit_n 置 0 后的值.
#define BIT_GET_MDF1(src, n)
 获取将 src 的 bit_n 置 1 后的值.
#define BIT_GET_MDF(src, n, value)
 获取将 src 的 bit_n 置 value 后的值.
#define BIT_GET_FLIP(src, n)
 获取翻转 src 的 bit_n 后的值.
#define BIT_SET0(src, n)
 设置 src 的 bit_n 为 0.
#define BIT_SET1(src, n)
 设置 src 的 bit_n 为 1.
#define BIT_SET(src, n, value)
 设置 src 的 bit_n 为 value.
#define BIT_FLIP(src, n)
 翻转 src 的 bit_n.
#define BIT_GET_LSH(src)
 获取左移 src 1 位的结果.
#define BIT_GET_RSH(src)
 获取右移 src 1 位的结果.
#define BIT_MASK(n)
 获取低 n 位为 1 的位掩码.
#define BIT_MASK_LSH(n, offset)
 获取低 n 位为 1 的位掩码, 并左移 offset 位.
#define BITS_GET_MDF0(src, bitmask)
 获取设置 src 的对应位掩码 bitmask 为 1 的地方为 0 后的值.
#define BITS_GET_MDF1(src, bitmask)
 获取设置 src 的对应位掩码 bitmask 为 1 的地方为 1 后的值.
#define BITS_GET_MDF_FLIP(src, bitmask)
 获取翻转 src 的 bitmask 为 1 的位后的值.
#define BITS_SET0(src, bitmask)
 设置 src 的对应位掩码 bitmask 为 1 的地方为 0.
#define BITS_SET1(src, bitmask)
 设置 src 的对应位掩码 bitmask 为 1 的地方为 1.
#define BITS_FLIP(src, bitmask)
 翻转 src 的 bitmask 为 1 的位.
#define BITSn_GET_LSH(src, n, offset)
 获取 src 保留低 n 位(共有 n 位)并左移 offset 位后的值.
#define BITSn_GET_RSH(src, n, offset)
 获取 src 的从 offset 位起共 n 位数据.
#define BITSn_GET_MDF(src, n, offset, value)
 获取将 src 的 offset 位起共 n 位修改为 value 后的值.
#define BITSn_SET(src, n, offset, value)
 设置 src 的 offset 位起共 n 位为 value.

详细描述

XTINY 位操作宏集合

宏定义说明

◆ BIT

#define BIT ( n)
值:
(BIT_IE << (n))
#define BIT_IE

在文件 xt_bit.h 第 80 行定义.

◆ BIT0

#define BIT0   0x00000001UL

在文件 xt_bit.h 第 32 行定义.

◆ BIT1

#define BIT1   0x00000002UL

在文件 xt_bit.h 第 33 行定义.

◆ BIT10

#define BIT10   0x00000400UL

在文件 xt_bit.h 第 42 行定义.

◆ BIT11

#define BIT11   0x00000800UL

在文件 xt_bit.h 第 43 行定义.

◆ BIT12

#define BIT12   0x00001000UL

在文件 xt_bit.h 第 44 行定义.

◆ BIT13

#define BIT13   0x00002000UL

在文件 xt_bit.h 第 45 行定义.

◆ BIT14

#define BIT14   0x00004000UL

在文件 xt_bit.h 第 46 行定义.

◆ BIT15

#define BIT15   0x00008000UL

在文件 xt_bit.h 第 47 行定义.

◆ BIT16

#define BIT16   0x00010000UL

在文件 xt_bit.h 第 48 行定义.

◆ BIT17

#define BIT17   0x00020000UL

在文件 xt_bit.h 第 49 行定义.

◆ BIT18

#define BIT18   0x00040000UL

在文件 xt_bit.h 第 50 行定义.

◆ BIT19

#define BIT19   0x00080000UL

在文件 xt_bit.h 第 51 行定义.

◆ BIT2

#define BIT2   0x00000004UL

在文件 xt_bit.h 第 34 行定义.

◆ BIT20

#define BIT20   0x00100000UL

在文件 xt_bit.h 第 52 行定义.

◆ BIT21

#define BIT21   0x00200000UL

在文件 xt_bit.h 第 53 行定义.

◆ BIT22

#define BIT22   0x00400000UL

在文件 xt_bit.h 第 54 行定义.

◆ BIT23

#define BIT23   0x00800000UL

在文件 xt_bit.h 第 55 行定义.

◆ BIT24

#define BIT24   0x01000000UL

在文件 xt_bit.h 第 56 行定义.

◆ BIT25

#define BIT25   0x02000000UL

在文件 xt_bit.h 第 57 行定义.

◆ BIT26

#define BIT26   0x04000000UL

在文件 xt_bit.h 第 58 行定义.

◆ BIT27

#define BIT27   0x08000000UL

在文件 xt_bit.h 第 59 行定义.

◆ BIT28

#define BIT28   0x10000000UL

在文件 xt_bit.h 第 60 行定义.

◆ BIT29

#define BIT29   0x20000000UL

在文件 xt_bit.h 第 61 行定义.

◆ BIT3

#define BIT3   0x00000008UL

在文件 xt_bit.h 第 35 行定义.

◆ BIT30

#define BIT30   0x40000000UL

在文件 xt_bit.h 第 62 行定义.

◆ BIT31

#define BIT31   0x80000000UL

在文件 xt_bit.h 第 63 行定义.

◆ BIT4

#define BIT4   0x00000010UL

在文件 xt_bit.h 第 36 行定义.

◆ BIT5

#define BIT5   0x00000020UL

在文件 xt_bit.h 第 37 行定义.

◆ BIT6

#define BIT6   0x00000040UL

在文件 xt_bit.h 第 38 行定义.

◆ BIT7

#define BIT7   0x00000080UL

在文件 xt_bit.h 第 39 行定义.

◆ BIT8

#define BIT8   0x00000100UL

在文件 xt_bit.h 第 40 行定义.

◆ BIT9

#define BIT9   0x00000200UL

在文件 xt_bit.h 第 41 行定义.

◆ BIT_FLIP

#define BIT_FLIP ( src,
n )
值:
((src) = BIT_GET_FLIP(src, n))
#define BIT_GET_FLIP(src, n)
获取翻转 src 的 bit_n 后的值.

翻转 src 的 bit_n.

参数
src被翻转的变量.
n比特下标, 从 0 开始.

在文件 xt_bit.h 第 182 行定义.

◆ BIT_GET

#define BIT_GET ( src,
n )
值:
(((src) >> (n)) & BIT0)
#define BIT0

获取 src 的 bit_n.

参数
src被读取的变量.
n比特下标, 从 0 开始.
返回
src 的 bit_n 上的值.

在文件 xt_bit.h 第 92 行定义.

◆ BIT_GET_FLIP

#define BIT_GET_FLIP ( src,
n )
值:
((src) ^ BIT(n))
#define BIT(n)

获取翻转 src 的 bit_n 后的值.

参数
src被读取的变量.
n比特下标, 从 0 开始.
返回
翻转 src 的 bit_n 后的值.

在文件 xt_bit.h 第 141 行定义.

◆ BIT_GET_LSH

#define BIT_GET_LSH ( src)
值:
((src) << 1)

获取左移 src 1 位的结果.

参数
src被左移的变量.
返回
左移 src 1 位 后的结果.

在文件 xt_bit.h 第 193 行定义.

◆ BIT_GET_MDF

#define BIT_GET_MDF ( src,
n,
value )
值:
(BIT_GET_MDF0(src, n) | (!!(value) << (n)))
#define BIT_GET_MDF0(src, n)
获取将 src 的 bit_n 置 0 后的值.

获取将 src 的 bit_n 置 value 后的值.

参数
src被读取的变量.
n比特下标, 从 0 开始.
value0 或 1.
返回
src 的 bit_n 置 value 后的值.

在文件 xt_bit.h 第 129 行定义.

◆ BIT_GET_MDF0

#define BIT_GET_MDF0 ( src,
n )
值:
((src) & ~BIT(n))

获取将 src 的 bit_n 置 0 后的值.

参数
src被读取的变量.
n比特下标, 从 0 开始.
返回
src 的 bit_n 置 0 后的值.

在文件 xt_bit.h 第 104 行定义.

◆ BIT_GET_MDF1

#define BIT_GET_MDF1 ( src,
n )
值:
((src) | BIT(n))

获取将 src 的 bit_n 置 1 后的值.

参数
src被读取的变量.
n比特下标, 从 0 开始.
返回
src 的 bit_n 置 1 后的值.

在文件 xt_bit.h 第 116 行定义.

◆ BIT_GET_RSH

#define BIT_GET_RSH ( src)
值:
((src) >> 1)

获取右移 src 1 位的结果.

参数
src被右移的变量.
返回
右移 src 1 位 后的结果.

在文件 xt_bit.h 第 204 行定义.

◆ BIT_IE

#define BIT_IE   (1UL)

或 (uint32_t)1

在文件 xt_bit.h 第 72 行定义.

◆ BIT_MASK

#define BIT_MASK ( n)
值:
(((n) < (32)) ? (BIT(n) - 1) : (0xFFFFFFFFUL))

获取低 n 位为 1 的位掩码.

参数
n小于等于 32 的数.
返回
低 n 位为 1 的位掩码.
BIT_MASK(6) == 0x003f == 0b00111111
BIT_MASK(13) == 0x1fff == 0b00011111 11111111

在文件 xt_bit.h 第 220 行定义.

◆ BIT_MASK_LSH

#define BIT_MASK_LSH ( n,
offset )
值:
(BIT_MASK(n) << (offset))
#define BIT_MASK(n)
获取低 n 位为 1 的位掩码.

获取低 n 位为 1 的位掩码, 并左移 offset 位.

参数
n小于等于 32 的数.
offset左移位数.
返回
高 n 位为 1 的位掩码.

在文件 xt_bit.h 第 232 行定义.

◆ BIT_SET

#define BIT_SET ( src,
n,
value )
值:
((src) = BIT_GET_MDF(src, n, value))
#define BIT_GET_MDF(src, n, value)
获取将 src 的 bit_n 置 value 后的值.

设置 src 的 bit_n 为 value.

参数
src被读写的变量.
n比特下标, 从 0 开始.
value0 或 1.

在文件 xt_bit.h 第 172 行定义.

◆ BIT_SET0

#define BIT_SET0 ( src,
n )
值:
((src) = BIT_GET_MDF0(src, n))

设置 src 的 bit_n 为 0.

参数
src被读写的变量.
n比特下标, 从 0 开始.

在文件 xt_bit.h 第 151 行定义.

◆ BIT_SET1

#define BIT_SET1 ( src,
n )
值:
((src) = BIT_GET_MDF1(src, n))
#define BIT_GET_MDF1(src, n)
获取将 src 的 bit_n 置 1 后的值.

设置 src 的 bit_n 为 1.

参数
src被读写的变量.
n比特下标, 从 0 开始.

在文件 xt_bit.h 第 161 行定义.

◆ BITS_FLIP

#define BITS_FLIP ( src,
bitmask )
值:
((src) = BITS_GET_MDF_FLIP(src, bitmask))
#define BITS_GET_MDF_FLIP(src, bitmask)
获取翻转 src 的 bitmask 为 1 的位后的值.

翻转 src 的 bitmask 为 1 的位.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被翻转的位.
注解
  1. 位掩码为 1 的位表示需要被翻转的位.

在文件 xt_bit.h 第 325 行定义.

◆ BITS_GET_MDF0

#define BITS_GET_MDF0 ( src,
bitmask )
值:
((src) & ~(bitmask))

获取设置 src 的对应位掩码 bitmask 为 1 的地方为 0 后的值.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被设为 0 的位.
注解
  1. 位掩码为 1 的位表示需要被设为 0 的位.

在文件 xt_bit.h 第 245 行定义.

◆ BITS_GET_MDF1

#define BITS_GET_MDF1 ( src,
bitmask )
值:
((src) | (bitmask))

获取设置 src 的对应位掩码 bitmask 为 1 的地方为 1 后的值.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被设为 1 的位.
注解
  1. 位掩码为 1 的位表示需要被设为 1 的位.

在文件 xt_bit.h 第 258 行定义.

◆ BITS_GET_MDF_FLIP

#define BITS_GET_MDF_FLIP ( src,
bitmask )
值:
((src) ^ (bitmask))

获取翻转 src 的 bitmask 为 1 的位后的值.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被翻转的位.
注解
  1. 位掩码为 1 的位表示需要被翻转的位.

在文件 xt_bit.h 第 271 行定义.

◆ BITS_SET0

#define BITS_SET0 ( src,
bitmask )
值:
((src) = BITS_GET_MDF0(src, bitmask))
#define BITS_GET_MDF0(src, bitmask)
获取设置 src 的对应位掩码 bitmask 为 1 的地方为 0 后的值.

设置 src 的对应位掩码 bitmask 为 1 的地方为 0.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被设为 0 的位.
注解
  1. 位掩码为 1 的位表示需要被设为 0 的位.
uint32_t src = 0xffff;
BITS_SET0(src, 0b0011 0110 0101 1010) == 0b11001001 10100101
src = 0xffff;
BITS_SET0(src, BIT_MASK(4) << 3) == 0b11111111 10000111

在文件 xt_bit.h 第 292 行定义.

◆ BITS_SET1

#define BITS_SET1 ( src,
bitmask )
值:
((src) = BITS_GET_MDF1(src, bitmask))
#define BITS_GET_MDF1(src, bitmask)
获取设置 src 的对应位掩码 bitmask 为 1 的地方为 1 后的值.

设置 src 的对应位掩码 bitmask 为 1 的地方为 1.

参数
src被设置的变量.
bitmask位掩码. 注意! 为 1 的位表示需要被设为 1 的位.
注解
  1. 位掩码为 1 的位表示需要被设为 1 的位.
uint32_t src = 0x0000;
BITS_SET1(src, 0b0011 0110 0101 1010) == 0b00110110 01011010
src = 0x0000;
BITS_SET1(src, BIT_MASK(4) << 3) == 0b00000000 01111000

在文件 xt_bit.h 第 312 行定义.

◆ BITSn_GET_LSH

#define BITSn_GET_LSH ( src,
n,
offset )
值:
(((src) & BIT_MASK(n)) << (offset))

获取 src 保留低 n 位(共有 n 位)并左移 offset 位后的值.

left shifts.

参数
src被读取的源.
n需要读取 n 位.
offset偏移量. 从 bit0 起计算.
返回
src 内, 从 offset 位起, 共 n 位数据.

在文件 xt_bit.h 第 340 行定义.

◆ BITSn_GET_MDF

#define BITSn_GET_MDF ( src,
n,
offset,
value )
值:
(BITS_GET_MDF0((src), BIT_MASK_LSH((n), (offset))) \
| BITSn_GET_LSH((value), (n), (offset)))
#define BITSn_GET_LSH(src, n, offset)
获取 src 保留低 n 位(共有 n 位)并左移 offset 位后的值.
#define BIT_MASK_LSH(n, offset)
获取低 n 位为 1 的位掩码, 并左移 offset 位.

获取将 src 的 offset 位起共 n 位修改为 value 后的值.

参数
src被读取的源.
n需要修改的位数.
offset偏移量. 从 bit0 起计算.
valuesrc 的 offset 位起 n 位源需要修改到的目标值.
返回
src 的 offset 位起 n 位修改为 value 的值.
BITSn_GET_MDF(src , n, offset, value )
BITSn_GET_MDF(0x4c5ca6d2, 8, 13 , 0b10101111)
src: 0100 1100 0101 1100 1010 0110 1101 0010 == 0x4c5ca6d2
1 0101 111 == ((value & BIT_MASK(8)) << 13)
↓ ↓↓↓↓ ↓↓↓
ret: 0100 1100 0101 0101 1110 0110 1101 0010 == 0x4c55e6d2
注解
  1. n + offset 不要大于 32 位(如果没有设 BIT_IE 为 1ULL).

在文件 xt_bit.h 第 395 行定义.

◆ BITSn_GET_RSH

#define BITSn_GET_RSH ( src,
n,
offset )
值:
(((src) >> (offset)) & BIT_MASK(n))

获取 src 的从 offset 位起共 n 位数据.

right shifts.

参数
src被读取的源.
n需要保留 n 位.
offset偏移量. 从 bit0 起计算.
返回
src 内, 从 offset 位起, 共 n 位数据.
BITS_GET_RSH(0b0011 1010 1111 0010, 7, 5) == 0x57 == 0b01010111
bit: 54 3210 : bit == 5
src: 0b0011 1010 1111 0010 : src == 0x3af2
↓ ↓
num: 7654 321 : n == 7
————————————————————————————————————————————
ret: 0b0 1010 111 : ret == 0x57

在文件 xt_bit.h 第 367 行定义.

◆ BITSn_SET

#define BITSn_SET ( src,
n,
offset,
value )
值:
((src) = BITSn_GET_MDF((src), (n), (offset), (value)))
#define BITSn_GET_MDF(src, n, offset, value)
获取将 src 的 offset 位起共 n 位修改为 value 后的值.

设置 src 的 offset 位起共 n 位为 value.

参见
BITSn_GET_MDF BITSn_GET_MDF
注解
  1. n + offset 不要大于 32 位(如果没有设 BIT_IE 为 1ULL).

在文件 xt_bit.h 第 408 行定义.