如在STM32法定固件库中对端口使用方式结构体定义如下金沙网址:

上次牵线了相似结构体的概念以及援用方法,那么接下去将对结构体在法定固件库是如何具体采取的做出简短表达。

结构体指针成员变量援引方法是透过“→”符号来落到实处,举例要拜候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
   {
      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
       {
        GPIO-ResetBits(GPIOB,GPIO-Pin-5);                      //PB.5B输出低
        Delay;                                     //延时
        GPIO-SetBits(GPIOB,GPIO-Pin-5);                        //PB.5输出高
        Delay;
       }
   }

上述代码为对库函数进行操作使PB5口实行LED灯的闪光程序,也得以对存放器实行操作,程序如下:

while(1) {     GPIOB->BRR=0x0020;     delay(3000000);          GPIOD->BSRR=0x0020;     delay(3000000); }}

如上二种区别的操作,最后达到的功力同样,可是足以看来,无论是何种操作格局,在对STM32拓宽编制程序序的时候,都不能够不要先行对相应端口和石英钟进行配置,才足以利用。

相关文章