本帖最后由 xiaoshen-372360 于 2018-12-13 09:51 编辑 1 W3 E7 q m0 ~! d- Y' i$ W+ m
1 {1 d' R4 O! [" ^, Y) t2 f8 {. k+ K3 B' `7 x% t) M
昨天在群里讨论发现了关于STM32 的位域操作,发现特别奇妙,很舒服,在进行IO操作的时候会免去与或非的操作,直接操作一个位就可以了,很方便,尤其是在做IO设备的时候,很容易实现,定义起来也很方便,这是写的一个例子,大家可以参考一下。
( v) n$ z+ A; m$ O
- ^9 o* G/ m0 O* d9 w5 M
2 z0 X. ?! S" U) _- typedef struct a& @- }' B- J2 K; ]
- {
3 o# \' R. R2 [4 ], b - unsigned int a:1;
2 Z3 @+ I |4 s( a8 S$ |! c2 j - unsigned int b:1;
; x% J2 T, \# `; C- N - unsigned int c:1;
* ^, d- x) E; D+ [, Z - }demo;% w3 S0 |) y3 k* i0 `+ v* G) t
- int i=0;
. `; x s( H3 e+ S6 o/ I1 v3 i - union
/ c; c4 A" Q& T. `& U I. B - { unsigned int Data;& F# C) w- y" r" s. ]0 \: c( i9 ^8 X
- demo UN_Data;
2 K- t) X0 w& X! s! O' V5 B% l. w - }Tst_Data;
$ c* @( k( m6 z1 G6 X
. \* s" t3 [" L! H1 Z) k- int main(void)$ L8 g/ y2 \$ e
- { + b& g: _ n+ Y) k. y$ c
- i=sizeof(demo);
6 i6 t) D6 g+ c8 y, V/ B2 Q - ( p$ n4 e1 E' w7 p
- Tst_Data.UN_Data.a=1;
6 N- I5 G; Z' w- j - Tst_Data.UN_Data.b=1;, i8 r! B& S5 Q
- Tst_Data.UN_Data.c=1;
2 v! e9 i& v* e* R - Tst_Data.UN_Data.b=0;: U' {: E9 ]* N) S6 s
- for( ;; );7 G' {- y6 y [3 Z1 ~
- }
复制代码
* H4 B7 w6 X4 J: I% b1 H* u. _
+ J9 M A5 o0 U% d' d, B% @ |
谢谢支持,哈哈哈
寄存器的话在群里有人试过了,是可以的,优化等级还没试过
欢迎欢迎