上次介紹了一般結構體的定義以及引用方法,那麼接下來將對結構體在官方固件庫是如何具體使用的做出簡單說明。
結構體指針成員變量引用方法是通過“→”符號來實現,比如要訪問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進行編程序的時候,必須要事先對相應端口進行配置,才可以使用。