结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型。
        首先结构体可以在一个结构中声明不同的数据类型。
        第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
        第三,节省内存空间
        第四,高效率。

枚举工作模式:
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",0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,

"2",0x00,0x00,0x08,0x04,0x84,0x44,0x38,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x00,

"3",0x00,0x00,0x08,0x04,0x44,0x44,0xB8,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,

"4",0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x00,0x01,0x01,0x05,0x07,0x05,0x00

}

STM32 枚举类型和结构体的使用的更多相关文章

  1. C#枚举类型和结构体

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  2. C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

    C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量 ...

  3. C++复合类型(结构体)

    其实c++的结构体可以理解为类似于python的字典,我个人理解, 但有区别 先看结构 #include <iostream> 关键字 标记成为新类型的名称 struct inflatab ...

  4. 【UE4 C++ 基础知识】<4> 枚举 Enum、结构体 Struct

    枚举 UENUM宏搭配BlueprintType可以将枚举暴露给蓝图,不使用的话,仅能在C++使用 //定义一个原生enum class enum class EMyType { Type1, Typ ...

  5. stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系

    以一个挂接在APB2上的外设函数使能为例 A : RCC_APB2PeriphClockCmd():时钟使能函数 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFI ...

  6. c# 结构体、枚举类型及函数调用

    一.结构体 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 枚举类型和结构体都属于值类型. 二.枚举类型 1.枚举类型之针对字符串,对于索引,无意义2.常量的集合,这些常 ...

  7. c# 函数练习;结构体、枚举类型

       * 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...

  8. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  9. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

随机推荐

  1. SQL ID自增列从1开始重新排序 分类: SQL Server 2014-05-19 14:46 652人阅读 评论(0) 收藏

    数据库中把ID自增长重置成1: 一般做法:(太麻烦) 复制表数据->删除原表.新建一张表->粘贴: 新方法: 数据库中:新建查询->复制.粘贴一下代码->修改表名,执行即可(先 ...

  2. gitlab 启动参考

    第一步 启动gitlab bundle exec rails s -e production -d 第二步 启动redis /etc/init.d/redis start chkconfig redi ...

  3. [PWA] sw-precache

    Link to CodeLab In this codelab, we'll retrace those steps but this time we'll use a tool called sw- ...

  4. spring mvc DispatcherServlet详解之一---处理请求深入解析(续)

    上文中,我们知道分发过程有以下步骤: 分发过程如下: 1. 判断是否设置了multipart resolver,设置的话转换为multipart request,没有的话则继续下面的步骤. 2. 根据 ...

  5. git 删除远程master 分支

    ➜  fekit-extension-yo git:(dev) git push origin :master remote: error: By default, deleting the curr ...

  6. SQL PL基本概念

    --声明变量 --1.语法: --declare <varible-name> <data-type> <default-constant>默认不变 --decla ...

  7. mvc Action上面加 [HttpPost]

    mvc  Action上面加 [HttpPost]  意思就是这个action只能响应post请求. 如果发get请求这里是没有响应的

  8. GitHub Desktop安装异常解决

    为了更好的共同学习,共同进步,哥们推荐我使用GitHub记录自己每天的学习记录,当下很火的提供一个分布式的版本控制系统(Git)服务的网站,GitHub提供GitHub Desktop桌面程序方便协同 ...

  9. Android开发--推送

    需要的知识点:Notification.Service 第三方开源框架 : android-async-http-master 推送的来源:android项目中,有时会有这样一种需求:客户每隔一段时间 ...

  10. 微软企业库Microsoft Enterprise Library的相关文章链接

    微软企业库4.1学习笔记 http://blog.csdn.net/anyqu/article/category/1228691/3 黄聪:Enterprise Library 5.0 系列教程 ww ...