上次介绍了一般结构体的定义以及引用方法,那么接下来将对结构体在官方固件库是如何具体使用的做出简单说明。
结构体指针成员变量引用方法是通过“→”符号来实现,比如要访问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进行编程序的时候,必须要事先对相应端口进行配置,才可以使用。
时间: 2024-10-26 03:00:44