本帖最后由 xiaoshen-372360 于 2018-12-13 09:51 编辑
5 [2 \# z2 Q5 j; g; Q, U
8 x- u8 d) e0 g3 c" U: q. E `, [& E( T* p; ^
昨天在群里讨论发现了关于STM32 的位域操作,发现特别奇妙,很舒服,在进行IO操作的时候会免去与或非的操作,直接操作一个位就可以了,很方便,尤其是在做IO设备的时候,很容易实现,定义起来也很方便,这是写的一个例子,大家可以参考一下。! ~5 q, f6 M d7 A3 F8 v: {) b
/ d# Q, f* w% W, P
" O% w" w5 d( ^- c- typedef struct
3 g' x& }3 }& z" w j* v5 U - {
, p3 v6 S% I4 p* ?. o$ c* U+ } - unsigned int a:1;
7 }$ m/ |8 P5 k5 V0 {8 u" A - unsigned int b:1;& K2 e- W% F# A u- V
- unsigned int c:1;4 p: l& ]# j& k! T
- }demo;
9 L, d# f9 v% b8 o: P - int i=0;
! S0 G2 D' W# P7 b: {( c. Y - union ; b; f0 T6 S! B2 j
- { unsigned int Data;
3 S# k- f y* I4 V% ^! b9 v - demo UN_Data;9 e* h' Y+ `) C) d9 b0 L
- }Tst_Data;" V) m5 E- X& @
) N* H9 y$ w6 n2 i# w. }- int main(void)- P$ S9 n; T" Z( ~- M
- { 7 j+ E: t. r& H H/ a
- i=sizeof(demo);0 h( p7 s9 F# J+ m
7 ~( M' `& f' j& k3 B# a% t- Tst_Data.UN_Data.a=1;
5 t2 A. x9 \8 S+ N - Tst_Data.UN_Data.b=1;& X1 {- @' M3 }0 `6 n- X' |! z
- Tst_Data.UN_Data.c=1;3 k) S; b6 Q* S1 P6 C/ ]: c
- Tst_Data.UN_Data.b=0;
; ]3 U% G+ j+ N0 [6 I* M2 d, e - for( ;; );
5 V% `; }- R+ c, P8 R! B* Z+ i( Y - }
复制代码
) A4 r: b% P$ x9 s( z
: S6 b: F8 _3 p0 i
|
谢谢支持,哈哈哈
寄存器的话在群里有人试过了,是可以的,优化等级还没试过
欢迎欢迎