xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_bit.h
浏览该文件的文档.
1
12
13#ifndef __XT_BIT_H__
14#define __XT_BIT_H__
15
16/* ==================== [Includes] ========================================== */
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
28
29/* ==================== [Defines] =========================================== */
30
31#if (!defined(BIT0))
32#define BIT0 0x00000001UL
33#define BIT1 0x00000002UL
34#define BIT2 0x00000004UL
35#define BIT3 0x00000008UL
36#define BIT4 0x00000010UL
37#define BIT5 0x00000020UL
38#define BIT6 0x00000040UL
39#define BIT7 0x00000080UL
40#define BIT8 0x00000100UL
41#define BIT9 0x00000200UL
42#define BIT10 0x00000400UL
43#define BIT11 0x00000800UL
44#define BIT12 0x00001000UL
45#define BIT13 0x00002000UL
46#define BIT14 0x00004000UL
47#define BIT15 0x00008000UL
48#define BIT16 0x00010000UL
49#define BIT17 0x00020000UL
50#define BIT18 0x00040000UL
51#define BIT19 0x00080000UL
52#define BIT20 0x00100000UL
53#define BIT21 0x00200000UL
54#define BIT22 0x00400000UL
55#define BIT23 0x00800000UL
56#define BIT24 0x01000000UL
57#define BIT25 0x02000000UL
58#define BIT26 0x04000000UL
59#define BIT27 0x08000000UL
60#define BIT28 0x10000000UL
61#define BIT29 0x20000000UL
62#define BIT30 0x40000000UL
63#define BIT31 0x80000000UL
64#endif /* (!defined(BIT0)) */
65
66/* ==================== [Typedefs] ========================================== */
67
68/* ==================== [Global Prototypes] ================================= */
69
70/* ==================== [Macros] ============================================ */
71
72#define BIT_IE (1UL)
73
74#if defined(__ASSEMBLER__)
75# undef BIT_IE
76# define BIT_IE 1
77#endif
78
79#if !defined(BIT)
80# define BIT(n) (BIT_IE << (n))
81#endif
82
83#if !defined(BIT_GET)
92# define BIT_GET(src, n) (((src) >> (n)) & BIT0)
93#endif
94
95#if !defined(BIT_GET_MDF0)
104# define BIT_GET_MDF0(src, n) ((src) & ~BIT(n))
105#endif
106
107#if !defined(BIT_GET_MDF1)
116# define BIT_GET_MDF1(src, n) ((src) | BIT(n))
117#endif
118
119#if !defined(BIT_GET_MDF)
129# define BIT_GET_MDF(src, n, value) (BIT_GET_MDF0(src, n) | (!!(value) << (n)))
130#endif
131
132#if !defined(BIT_GET_FLIP)
141# define BIT_GET_FLIP(src, n) ((src) ^ BIT(n))
142#endif
143
144#if !defined(BIT_SET0)
151# define BIT_SET0(src, n) ((src) = BIT_GET_MDF0(src, n))
152#endif
153
154#if !defined(BIT_SET1)
161# define BIT_SET1(src, n) ((src) = BIT_GET_MDF1(src, n))
162#endif
163
164#if !defined(BIT_SET)
172# define BIT_SET(src, n, value) ((src) = BIT_GET_MDF(src, n, value))
173#endif
174
175#if !defined(BIT_FLIP)
182# define BIT_FLIP(src, n) ((src) = BIT_GET_FLIP(src, n))
183#endif
184
185#if !defined(BIT_GET_LSH)
193# define BIT_GET_LSH(src) ((src) << 1)
194#endif
195
196#if !defined(BIT_GET_RSH)
204# define BIT_GET_RSH(src) ((src) >> 1)
205#endif
206
207#if !defined(BIT_MASK)
220# define BIT_MASK(n) (((n) < (32)) ? (BIT(n) - 1) : (0xFFFFFFFFUL))
221#endif
222
223#if !defined(BIT_MASK_LSH)
232# define BIT_MASK_LSH(n, offset) (BIT_MASK(n) << (offset))
233#endif
234
235#if !defined(BITS_GET_MDF0)
245# define BITS_GET_MDF0(src, bitmask) ((src) & ~(bitmask))
246#endif
247
248#if !defined(BITS_GET_MDF1)
258# define BITS_GET_MDF1(src, bitmask) ((src) | (bitmask))
259#endif
260
261#if !defined(BITS_GET_MDF_FLIP)
271# define BITS_GET_MDF_FLIP(src, bitmask) \
272 ((src) ^ (bitmask))
273#endif
274
275#if !defined(BITS_SET0)
292# define BITS_SET0(src, bitmask) ((src) = BITS_GET_MDF0(src, bitmask))
293#endif
294
295#if !defined(BITS_SET1)
312# define BITS_SET1(src, bitmask) ((src) = BITS_GET_MDF1(src, bitmask))
313#endif
314
315#if !defined(BITS_FLIP)
325# define BITS_FLIP(src, bitmask) ((src) = BITS_GET_MDF_FLIP(src, bitmask))
326#endif
327
328#if !defined(BITSn_GET_LSH)
340# define BITSn_GET_LSH(src, n, offset) \
341 (((src) & BIT_MASK(n)) << (offset))
342#endif
343
344#if !defined(BITSn_GET_RSH)
367# define BITSn_GET_RSH(src, n, offset) \
368 (((src) >> (offset)) & BIT_MASK(n))
369#endif
370
371#if !defined(BITSn_GET_MDF)
395# define BITSn_GET_MDF(src, n, offset, value) \
396 (BITS_GET_MDF0((src), BIT_MASK_LSH((n), (offset))) \
397 | BITSn_GET_LSH((value), (n), (offset)))
398#endif
399
400#if !defined(BITSn_SET)
408# define BITSn_SET(src, n, offset, value) \
409 ((src) = BITSn_GET_MDF((src), (n), (offset), (value)))
410#endif
411 /* xt_bit */
413
414#ifdef __cplusplus
415} /*extern "C"*/
416#endif
417
418#endif /* __XT_BIT_H__ */