STM32學習記錄之GPIO篇

本篇學習目的:
一、學會對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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章