本帖最后由 xiaoshen-372360 于 2018-12-13 09:51 编辑
/ E( B, W% X5 n. ~/ m% O
0 W' g1 g) b+ I. m. l/ h _: p7 ^( X2 `5 m) N. D2 N9 l: k
昨天在群里讨论发现了关于STM32 的位域操作,发现特别奇妙,很舒服,在进行IO操作的时候会免去与或非的操作,直接操作一个位就可以了,很方便,尤其是在做IO设备的时候,很容易实现,定义起来也很方便,这是写的一个例子,大家可以参考一下。
* }5 X% X8 g8 a8 n% ~6 D9 q/ W+ j; {" V) F4 l. M
Z4 m; B( e6 {, O- typedef struct
) f& W3 a+ R' q+ n0 p4 Z3 x' d - { 2 y2 M8 a% L- A4 }
- unsigned int a:1;
+ s& {6 F% B9 Z - unsigned int b:1;2 D. t. ^) o1 j. U
- unsigned int c:1;
9 A' @5 j6 a0 Y7 a/ [' h* j - }demo;3 I) e- M3 T; p
- int i=0;7 O7 _; ^- r" \" ]
- union " g- T: M/ O$ x1 D/ l, g
- { unsigned int Data;
0 c6 j3 L: o" c$ N, F1 n) S - demo UN_Data;
: \ q1 l X* K# [5 z8 h - }Tst_Data;& [: h, I# t6 [
, @; i, ]. b) I6 Q) a* ~6 j- int main(void)
; x- X: h( ?( u' ]3 N& ^ - { $ v& d* G7 V; k( ^0 ?0 i$ R4 Q, p
- i=sizeof(demo);
0 H: k& t$ _1 J1 p. ]+ A& P
7 l4 \( M: ~+ T' |4 G' f# d- Tst_Data.UN_Data.a=1;
: `/ n9 F6 n1 c6 ^, s" d$ n - Tst_Data.UN_Data.b=1;
! r4 z6 O* r. ^% S% t4 M - Tst_Data.UN_Data.c=1;
& ~$ r" @9 x! d/ h - Tst_Data.UN_Data.b=0;6 x( U$ L% u: { [9 q/ Z. q" d
- for( ;; );+ m% V+ D! Z l% R! j
- }
复制代码
% n9 \1 t4 K* N' x
8 T9 _' ?7 D1 D' L$ z- M
|
谢谢支持,哈哈哈
寄存器的话在群里有人试过了,是可以的,优化等级还没试过
欢迎欢迎