• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32 枚举类型和结构体的大家的理解使用

34edade129bbd585 2018-11-05 浏览量:2605
STM32 枚举类型和结构体的大家的理解使用
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • num 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增
    声明
    [访问修饰符] enum 枚举名 {
        成员1
        成员2    
    }
     
    如何使用
        枚举名 【名称自定义】=枚举名.[内容]
     
    枚举的作用
    1、限制用户不能随意赋值,只能在定义枚举时列举的值中选择
    2、不需要死记每一个值是什么,只需要选择相应的值(哪里不会点哪里)

    • 发布于 2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:11
  • 结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型。
            首先结构体可以在一个结构中声明不同的数据类型。
            第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结

    构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全

    相同。
            第三,节省内存空间
            第四,高效率。

    枚举工作模式:
    typedef enum
    {
            GPIO_Mode_IN   = 0x00,        /*!< GPIO Input Mode              */
            GPIO_Mode_OUT  = 0x01,    /*!< GPIO Output Mode             */
            GPIO_Mode_AF   = 0x02,      /*!< GPIO Alternate function Mode */
            GPIO_Mode_AN   = 0x03         /*!< GPIO Analog In/Out Mode      */
    }GPIOMode_TypeDef ;


    枚举工作速度:
    typedef enum
    {
            GPIO_Speed_Level_1  = 0x01,   /*!< Medium Speed */
            GPIO_Speed_Level_2  = 0x02,   /*!< Fast Speed   */
            GPIO_Speed_Level_3  = 0x03       /*!< High Speed   */
    }GPIOSpeed_TypeDef ;


    定义结构体类型:
    typedef struct
    {
            GPIOMode_TypeDef GPIO_Mode ;    
            GPIOSpeed_TypeDef GPIO_Speed ; 
    }GPIO_InitTypeDef ;


    定义初始化结构体变量及赋值:
            GPIO_InitTypeDef    GpiocInit;                                    //定义变量
            GpiocInit.GPIO_Mode = GPIO_Mode_IN;                //变量赋值
            GpiocInit.GPIO_Speed = GPIO_Speed_Level_2;


    形参为结构体的函数定义:
            GPIO_Init(GPIO_InitTypeDef  init);


    形参为结构体的函数:

    GPIO_Init(GPIO_InitTypeDef  init)
    {
                x = init.GPIO_Mode ;                                     //  x = 0x00
             y = init.GPIO_Speed ;                                   // y = 0x02





    形参为结构体变量的函数调用:
            GPIO_Init(GpiocInit) ;

    例2:
    定义字符库结构体:
    typedef struct typFNT_ASC16

    {
        char Index[1];
        char Msk[16];
    }ZiFuKu;


    结构体幅值
    const ZiFuKu ASC_16[] = 
    {


    "1"0x000x000x080x080xFC0x000x000x000x000x000x040x040x070x040x040x00

    "2"0x000x000x080x040x840x440x380x000x000x000x060x050x040x040x040x00

    "3"0x000x000x080x040x440x440xB80x000x000x000x020x040x040x040x030x00

     
    "4"0x000x000x800x600x180xFC0x000x000x000x000x010x010x050x070x050x00

    }




    • 发布于2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 结构体是多个相关变量的规范集合,以方便整个使用和内存管理。

    枚举其实主要用来限定变量的取值范围。

    • 发布于2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举类型就是顺序宏定义,结构体就是把变量整个在一起
    • 发布于2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个应该是C语言的理解和使用吧,有些概念还是需要从基本的定义开始的,好些时候我会重新去看C语言的知识点
    • 发布于2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 这两个都是c语言基础,看看stm32库里面怎么用的,全是结构体枚举,一大堆
    • 发布于2018-11-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举可以用宏定义替换,用枚举好处是写起来省事。

    结构体就是一个集合,把有关的量放在一起比较好处理

    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举变量只是方便记忆的,跟define的用法差不多

    结构体是一种将一系列有某种特征的变量放在一起的集合

    • 发布于2018-11-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个枚举变量都是可以直接用结构体的方式来处理,实际的变量处理都是可以一样使用的
    • 发布于2018-11-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举变量可以限制你的变量范围,这样不容易出现错误也方便校验
    • 发布于2018-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举类型其实就是对一系列的状态用正整数表示而已,结构体一般用于存放一整块有关联的数据。
    • 发布于2018-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 枚举中是用来判断数据的,进行数据的校验
    • 发布于2018-12-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32 枚举类型和结构体的大家的理解使用