STM32學習—GPIO操作

所有的玩單片機的都離不開IO口操作,而是STM32的IO口就是GPIO。剛拿到使STM32例程時感覺是什麼都看不懂,爲什麼點亮一個LED燈代碼也一大片。經過不斷地學習和總結,發現GPIO的操作不管你是點燈、蜂鳴器還是按鍵都是一個套路。總結一下幾步:

創建結構體:GPIO_InitTypeDe

使能GPIO端口時鐘:調用函數RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)

結構體成員賦值,設置相關參數

    GPIO_InitStructure.GPIO_Pin 設置GPIO第幾個管腳,GPIO_Pin_1表示第一個管腳
                GPIO_InitStructure.GPIO_Mode GPIO有8種輸入輸出方式分別如下:

          宏定義模式名           值                                                                 輸入輸出方式  

         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                                                            推輓複用功能
                     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

調用函數GPIO_Init初始化GPIO

     原型:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

     參數:第一個參數是用來指定 GPIO,取值範圍爲 GPIOA~GPIOG。第二個參數爲初始化參數結構體指針, 結構體類型爲 GPIO_InitTypeDef
 

GPIO讀寫操作

     GPIO輸出高電平   GPIO_SetBits(GPIOB,GPIO_Pin_5);  
                 GPIO輸出高電平   GPIO_ResetBits(GPIOB,GPIO_Pin_5); 
                 讀取GPIO的值       GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4); 


GPIO初始化函數

void GPIO_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;    //創建結構體
     
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能GPIO時鐘
    
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                 //設置GPIO_pin_5,說明IO口5個引腳
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //設置輸入輸出模式
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //設置頻率
 GPIO_Init(GPIOB, &GPIO_InitStructure);                    //調用GPIO_Init函數配置GPIO
}

GPIO讀寫函數

//GPIO寫函數,包括GPIO的拉高和拉低
GPIO_SetBits(GPIOB,GPIO_Pin_5);  //PB.5拉高,輸出高電平
GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //PB.5拉低,輸出低電平

//GPIO讀函數
GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);  //讀取PE.4的電平

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章