本帖最后由 xiaoshen-372360 于 2018-12-13 09:51 编辑
4 D5 E) x9 J% D! R; f+ ~1 Y+ {! u
6 c5 V7 x: t" H2 @; Y7 B8 B y4 ~# y9 F( F2 v
昨天在群里讨论发现了关于STM32 的位域操作,发现特别奇妙,很舒服,在进行IO操作的时候会免去与或非的操作,直接操作一个位就可以了,很方便,尤其是在做IO设备的时候,很容易实现,定义起来也很方便,这是写的一个例子,大家可以参考一下。$ d- Z$ R: m& M2 j6 H4 Q
& Y' s3 B; M i* s m# P: U4 ]: ~ `
- typedef struct $ ]7 a8 Z0 |+ r. \$ h S
- { / ?' {3 c! w4 e6 ~% H$ b
- unsigned int a:1;
' s7 B `+ I6 v, D( N& j( W - unsigned int b:1;
5 X1 a! T: z( ~( o6 ^# r - unsigned int c:1;. d5 ~- {! ^9 c" l8 N+ x# r, i
- }demo;& I$ o+ S7 T# x9 b) ~ c
- int i=0;) k' N% s8 `2 G% u' A- U4 A* k0 |
- union & R' S( F" P! P
- { unsigned int Data;
7 |# g, Y( f0 |* t9 _! X2 O, @ - demo UN_Data;- L3 A. x* X* i5 @
- }Tst_Data;8 E1 H# B% J% X9 S! J) e
7 o! k, L) b% o+ M1 J- int main(void)
8 L* a! u3 @* q t. s - {
# C5 W. r$ A: m% ^ - i=sizeof(demo);' v @8 y! G: c
- 0 `1 A. y; e7 q) Z s% F+ \
- Tst_Data.UN_Data.a=1;$ H1 ?' A" J! |
- Tst_Data.UN_Data.b=1;% u$ U# l& T) Y Z& X
- Tst_Data.UN_Data.c=1;
) j0 ^( F* M2 C - Tst_Data.UN_Data.b=0;0 W+ q; B5 Z% ?2 ~$ P Y
- for( ;; );3 t8 s& \, ]' V" U& F: ^$ Q/ t
- }
复制代码
( ?& [9 j. ~4 M2 w I- n) j* J# M+ r" e% y* ?
|
谢谢支持,哈哈哈
寄存器的话在群里有人试过了,是可以的,优化等级还没试过
欢迎欢迎