认识结构体,结构体在固件库中的应用
分类:美高梅游戏官网网站

结构体在固件库中的应用,结构体固件库

 

      上次介绍了一般结构体的定义以及引用方法,那么接下来将对结构体在官方固件库是如何具体使用的做出简单说明。

      结构体指针成员变量引用方法是通过“→”符号来实现,比如要访问student1结构体指针指向的结构体的成员变量name,那么方法是:

stuednt1—>name;

       如在STM32官方固件库中对端口使用模式结构体定义如下:

 

                       typedef enum
                             { GPIO_Mode_AIN = 0x0,            //模拟输入模式
                               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;

                       typedef enum                               //端口传输速率设定
                            {  GPIO_Speed_10MHz = 1,
                               GPIO-Speed-2MHz;
                               GPIO-Speed-50MHz;
                            }GPIOSpeed_TypeDef;                   

                       typedef struct                 

                             { uint16-t GPIO-Pin;
                               GPIOSpeed-Typedef GPIO-Speed; 
                               GPIOMode-TypeDef GPIO-Mode;
                             }GPIO_InitTypeDef;

 

     以上为官方库中对于端口的一些设定,具体的引用如下举例:

  #include "stm32f10"
  void Delay(u32 count)
    {
      u32 i=0;
      for(;i<count;i++);
   }
  int main(void)
   {
      GPIO-InitTypeDef GPIO-InitStructure;                     //定义结构体类型
      RCC-APB2PeriphClockCmd(RCC-APB2Peruph-GPIO,ENABLE);      //启用外设时钟APB2    
      GPIO-InitStructure.GPIO-Pin=GPIO-Pin-5;                       //配置PB.5端口
      GPIO-InitStructure.GPIO-Mode=GPIO-Mode-Out-PP;           //推挽输出
      GPIO-InitStructure.GPIO-Speed-50MHz;                     //IO口速度为50MHz
      GPIO-Init(GPIOB,GPIO-Pin-5);                             //PB.5端口初始化
      while(1)
       {
        GPIO-ResetBits(GPIOB,GPIO-Pin-5);                      //PB.5B输出低
        Delay(3000000);                                     //延时
        GPIO-SetBits(GPIOB,GPIO-Pin-5);                        //PB.5输出高
        Delay(3000000);
       }
   }

      此程序为PB.5口进行LED灯的闪亮程序。

      因此,在对STM32进行编程序的时候,必须要事先对相应端口进行配置,才可以使用。

 

上次介绍了一般结构体的定义以及引用方法,那么接下来将对结构体在官方固件库是如何具体使用...

认识结构体,结构体

 

        ST用结构体的形式对寄存器组进行了封装,因此对结构体有一定的认识和了解,也是学习固件库的重要一步。

      在C语言中,结构体就是指一种数据结构,他可以被声明为变量、指针或数组,用以实现复杂的数据结构。在MDK中有许多地方使用结构体以及结构体指针。

      结构体定义如下所示:

   Struct 结构体名{
                   成员列表:

                 }变量名列表;

     结构体类型名字=关键字struct+结构体名,结构体名由用户指定,区别其他结构体类型。

     如下结构体:

    struct date                      //声明一个结构体类型  
      {
       int month;
       int day;
       int year;
      };
    struce student                  //声明一个结构体类型
      {
        int num;
        int name[20];
        int sex;
        int age;
        struct date birthday;       //brithday是struct date类型
      };

      这只是指定了一个结构体类型,他相当于一个模型,并无具体的数据,系统对其也不分配实际的内存单元,为了可以在程序中使用结构体类型数据,需要定义结构体类型变量,并在其中村放入数据。可以采取3中方法定义结构体类型变量:

1、先声明结构体类型再定义变量

struct student student1,student2;

 

      如上已经定义一个结构体struct student,可以用它来定义变量,这种形式的定义有如"int a,b;"相似。

2、在声明类型的同时定义变量

  struce student                 
      {
        int num;
        int name[20];
        int sex;
        int age;
        struct date birthday;      
      }student1,student2;

      这样将声明类型和定义变量放在一起进行,能够直接看到结构体的结构,适合在写小程序时使用这种方法。

 

 3、不指定类型名而直接定义结构体类型变量

 struct {
         int num;
         int name[20];
         int sex;
         int age;
         struct date birthday;      
        }student1,student2;

      这样指定一个无名的结构体类型,不出现结构体名,因此无法再以此结构体类型去定义变量。

结构体变量的引用:

     在定义了结构体变量之后,就需要引用这个变量,那么引用变量需要几个规则:

     1、同类结构体可以互相赋值      如:   

                                     student1=student2;

      2、用若干结构体成员运算符一级一级找到最低级成员,而且只能对最低级成员进行赋值或存取运算,如:

                                    student1.num=10010;
                                    student1.birthday.year=2001;

     3、结构体变量成员可以像普通变量一样进行各种运算,如:

                                   student1.score=student2.score;
                                   sum=student1.score+student2.score;

结构体变量初始化举例:

#include<stdio.h>
void main()
{
  struct student
       {
           long int num;
           char name[20];
           char sex;
           car addr[20];       
       }a={10001,"li",'M',"beijing"}
  printf("No.:% ldnname:% snsex:% cnaddress:% sn",
             a.num,a.name,a.sex,a.addr);
}

   其运行结果如下:

No.: 10001
name: li
sex: M
address: beijing

 

 

 

ST用结构体的形式对寄存器组进行了封装,因此对结构体有一定的认识和了解,也是学习固件库的重要一步。 在C语言...

本文由美高梅网址发布于美高梅游戏官网网站,转载请注明出处:认识结构体,结构体在固件库中的应用

上一篇:乘法逆元,21夏令营清北学堂解题报告 下一篇:没有了
猜你喜欢
热门排行
精彩图文