我是靠谱客的博主 任性指甲油,这篇文章主要介绍用type定义的枚举类型和结构体,现在分享给大家,希望可以做个参考。

1.用typedef定义枚举类型

复制代码
1
2
3
4
5
6
7
8
9
10
typedef enum{ GPIO_Mode_AIN = 0x00, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0X28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef;

GPIOMode_TypeDef是新类型名,使用它定义变量时和int a;的方式类似,GPIOMode_TypeDef GPIO_Mode;给GPIO_Mode赋值时,只能取枚举当中定义的值。
此外,在C编译时,对枚举按常量来处理,若没有对枚举元素赋值,则C语言编译时会按照定义时的顺序依次对元素赋值为0,1,2……。当然,也可以想示例中那样,在定义时由程序员指定元素的值。

2.用typedef定义结构体

复制代码
1
2
3
4
5
typedef struct{ uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;

GPIO_InitTypeDef是新类型名,定时变量的方式为:GPIO_InitTypeDef GPIO_InitStructure;。结构体应用时的格式是:变量名.成员名,例如GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

3.应用

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// 定义GPIOMode_TypeDef枚举类型 typedef enum{ GPIO_Mode_AIN = 0x00, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0X28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; // 定义GPIOSpeed_TypeDef枚举类型 typedef enum{ GPIO_Speed_10MHZ = 1, GPIO_Speed_2MHZ, GPIO_Speed_50MHZ }GPIOSpeed_TypeDef; // 定义GPIO_InitTypeDef结构体类型 typedef struct{ uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; #define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected */ #define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected */ #define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected */ #define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected */ #define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */ #define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected */ #define GPIO_Pin_6 ((uint16_t)0x0040) /*!< Pin 6 selected */ #define GPIO_Pin_7 ((uint16_t)0x0080) /*!< Pin 7 selected */ #define GPIO_Pin_8 ((uint16_t)0x0100) /*!< Pin 8 selected */ #define GPIO_Pin_9 ((uint16_t)0x0200) /*!< Pin 9 selected */ #define GPIO_Pin_10 ((uint16_t)0x0400) /*!< Pin 10 selected */ #define GPIO_Pin_11 ((uint16_t)0x0800) /*!< Pin 11 selected */ #define GPIO_Pin_12 ((uint16_t)0x1000) /*!< Pin 12 selected */ #define GPIO_Pin_13 ((uint16_t)0x2000) /*!< Pin 13 selected */ #define GPIO_Pin_14 ((uint16_t)0x4000) /*!< Pin 14 selected */ #define GPIO_Pin_15 ((uint16_t)0x8000) /*!< Pin 15 selected */ #define GPIO_Pin_All((uint16_t)0xFFFF) /*!< All pins selected */ int main(void){ GPIO_InitTypeDef GPIOInitStructure;//定义变量 GPIOInitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIOInitStructure.GPIO_Speed = GPIO_Speed_50MHZ; GPIOInitStructure.GPIO_Mode = GPIO_Mode_Out_PP; }

最后

以上就是任性指甲油最近收集整理的关于用type定义的枚举类型和结构体的全部内容,更多相关用type定义内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部