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

概述

1.用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;

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

2.用typedef定义结构体

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.应用

// 定义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定义的枚举类型和结构体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部