由于STM32没有位处理,所以STM32不像51单片机一样支持BIT变量,下面教大家怎么在STM32中实现位变量
4 R9 [+ _& P) O7 s" t) H+ `0 O7 I3 h1、首先定义一个结构体- typedef struct
6 y! [, |8 ]2 z* T - {
. y5 @6 b) m7 S( x2 i- R1 z - unsigned char b0:1; 3 P& h; ~- `6 a) {
- unsigned char b1:1; % x% G" z+ g4 e6 X
- unsigned char b2:1; % a+ u' d0 a7 i8 W! E, d5 z
- unsigned char b3:1;
6 q: Y. j4 K0 F4 R/ F8 k- [ - unsigned char b4:1;
, K) Y/ y/ U! E& g) S: z9 k p, ^9 l - unsigned char b5:1;
6 z3 _9 t- `+ w3 n - unsigned char b6:1;2 I. c) d3 f* m, N+ C! X2 F% _0 [" e
- unsigned char b7:1;
8 D8 R) w. o* A% E$ x - } BIT8;
复制代码 , p! |8 ^ q$ m) S0 z6 P+ q9 U0 {
2、然后宏定义就行
+ B( q6 ]) s. C- g _9 k
' m* P* b6 A+ W9 J' b% P' c4 ?' i- unsigned char addrNewCode;
9 i4 ~# y1 c0 G$ z2 g5 n* D% B - - F v# v* Y! F3 U- O' h* W
- #define addrNewBit0 (((BIT8*) & addrNewCode) -> b0)$ T. n+ N! z6 p" ?, D h2 J/ Z+ o8 ^
- #define addrNewBit1 (((BIT8*) & addrNewCode) -> b1)
: I6 W3 R3 r m: U - #define addrNewBit2 (((BIT8*) & addrNewCode) -> b2)) _! C* F8 S* ?# e! m
- #define addrNewBit3 (((BIT8*) & addrNewCode) -> b3)2 F) p) H+ j/ Q: [
- #define addrNewBit4 (((BIT8*) & addrNewCode) -> b4)
6 F9 ]) E/ n2 P, f6 p- L - #define addrNewBit5 (((BIT8*) & addrNewCode) -> b5)2 T! `. k! l& S+ V }, \* j
- #define addrNewBit6 (((BIT8*) & addrNewCode) -> b6)
1 u1 r+ f$ I" w: H$ h% j$ k9 g9 |1 [ - #define addrNewBit7 (((BIT8*) & addrNewCode) -> b7)
复制代码 # L; F! M1 `$ j; p
3、这样的话addrNewBit0 等等就能当成位变量使用了
8 Y' p& L( }4 F) K. ]6 q; F; f4 ^ X# P
: V. S- u; Z% _8 a* M2 B/ d) k |