本篇學習目的:
一、學會對STM32芯片GPIO的基本操作
二、對GPIO的相關函數進行二次封裝,以便於後期開發
開發板GPIO原理圖如下
由圖可知LED接在GPIOC的PC0-PC7
STM的GPIO有如下8中模式
GPIO相關庫函數
GPIO模式配置函數:GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef *GPIO_InitStruct);
第一個參數用來指定GPIO口,取值範圍GPIOA—GPIOG
第二個參數用來初始化參數結構體指針,參數結構體定義如下:
typedef struct{
uint16_t GPIO_Pin; //選擇要設置的Pin口
GPIOSpeed_TypeDef GPIO_Speed;//設置IO的速率
GPIOMode_TypeDef GPIO_Mode;//設置IO的工作模式
}GPIO_InitTypeDef;
GPIO實驗例程:
#define LED GPIO_Pin_All
void Led_Init(){
GPIO_InitTypeDef GPIO_InitStruct; //聲明一個參數結構體變量
SystemInit();//初始化系統時鐘
RCC_APB2PerichClockCmd(RCC_APB2Perich_GPIOC,ENABLE);
//具體參數配置
GPIO_InitStruct.GPIO_Pin = LED;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
//初始化GPIO
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
GPIO輸出函數
GPIO_Write(GPIO_TypeDef* GPIOx,u16 PortVal);
該函數一次操作一組GPIO。
GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
該函數將相應的位置爲1
GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
該函數將相應的位置爲0
實驗例程:
void Led_DisPlay(){
GPIO_SetBits(GPIOC,LED); // close
delay(6000000);//自定義延遲函數,約1s
GPIO_ResetBits(GPIOC,LED);// open
delay(6000000);
}