本帖最后由 xiaoshen-372360 于 2018-12-13 09:51 编辑 3 C4 _6 z* @/ M
! o/ E' Y. x. {9 c9 c
+ f& \+ X5 j3 k
昨天在群里讨论发现了关于STM32 的位域操作,发现特别奇妙,很舒服,在进行IO操作的时候会免去与或非的操作,直接操作一个位就可以了,很方便,尤其是在做IO设备的时候,很容易实现,定义起来也很方便,这是写的一个例子,大家可以参考一下。$ n5 X, h' d6 b) E2 i2 K, Q
; ^- t" C" r2 B! q; Y- d
! d: v% [1 X( x# p7 ^! J- typedef struct 4 P3 `; W. _5 ^. O6 x2 l- [: Y
- { ( s( g7 B1 E$ Z2 Y! i
- unsigned int a:1;
( _) b. b$ a: x$ d" F- P - unsigned int b:1;: [+ S/ E; M- U9 X
- unsigned int c:1;
2 E% J" |' J, L/ n - }demo;
& y, @8 `& @9 Q - int i=0;
0 m+ e, X, S' v; F" V" y - union
; |! c$ g/ E& E; r9 c! K - { unsigned int Data;
9 O( B7 ~% y2 J6 P1 T - demo UN_Data;
# _- P, \# B2 l, Q - }Tst_Data;- O2 K$ U: Z |
1 t" `+ F% c& K. h) g8 b- int main(void)$ b) }5 l$ ^" B. {+ [
- { T6 \' V6 f! O9 H8 G( Y
- i=sizeof(demo);6 E; ^/ S5 ]4 p+ v
- / e, f; F; i' r0 W
- Tst_Data.UN_Data.a=1;2 |9 ^/ _, M+ h! {; y
- Tst_Data.UN_Data.b=1;3 _7 p2 y) j" C& x2 i
- Tst_Data.UN_Data.c=1;( x/ g" W S Z, G1 c; ]/ P
- Tst_Data.UN_Data.b=0;
3 }4 Q! G# X# l0 g - for( ;; );
; G+ v N, [4 a" C! Z3 F - }
复制代码
% L1 i8 ^, F4 [
( U: J. ?2 y9 v5 a5 g
|
谢谢支持,哈哈哈
寄存器的话在群里有人试过了,是可以的,优化等级还没试过
欢迎欢迎