對STM32官方庫封裝一:GPIO庫

來源:互聯網
上載者:User

        上次在Linux下構建好了stm32開發平台,用的是ST官方的庫,不過個人感覺人繁瑣,不符合個人習慣,就打算給它進行封裝一下,方便以後碼代碼.

===========================================================================

個人原創,轉載請註明出處

      http://blog.csdn.net/embbnux/article/details/18885277

博主最近在電腦上自建了部落格,以後會更多的用那個了,歡迎關注訪問,裡面也有很多有用資源:

        http://blog.embbnux.net/

    

     GPIO庫:


標頭檔gpio.h:

        

//-------------------------------------------------------------------------*// 檔案名稱: gpio.h                                                          *// 說  明: gpio驅動標頭檔  // Writor : Embbnux JI                                                *//------------------------------------------------------------------#ifndef __GPIO_H__#define __GPIO_H__#include "stm32f10x_rcc.h"#include "stm32f10x_gpio.h"//-------------------------------------------------------------------------*    //函數名: gpio_rcc                                                        *    //功  能: 初始化gpio 時鐘                                                       *     //參  數: RCC_APB2Periph:連接埠時鐘    //            RCC_APB2Periph_GPIOx                                                          //        NewState:初始狀態,ENABLE=使能                                  *    //返  回: 無                                                               *    //說  明: 無    void gpio_rcc(uint32_t RCC_APB2Periph, FunctionalState NewState);//-------------------------------------------------------------------------*    //函數名: gpio_init                                                        *    //功  能: 初始化gpio                                                       *     //參  數: GPIOx:連接埠名                                                      *    //        index:指定連接埠引腳  16表示全選                                                *    //        dir:引腳方向,0=輸入,1=輸出                                       *     //        data:初始狀態,0=低電平,1=高電平                                  *    //返  回: 無                                                               *    //說  明: 無    void gpio_init (GPIO_TypeDef* GPIOx, int index, int dir,int data); //-------------------------------------------------------------------------*     //函數名: gpio_ctrl                                                        *    //功  能: 設定引腳狀態                                                     *    //參  數: GPIOx:連接埠名                                                      *    //        index:指定連接埠引腳                                               *    //        data: 狀態,0=低電平,1=高電平                                     *    //返  回: 無                                                               *    //說  明: 無                                                               *    //-------------------------------------------------------------------------*void gpio_ctrl (GPIO_TypeDef* GPIOx, int index, int data); #endif 

C檔案gpio.c:

//-------------------------------------------------------------------------*// 檔案名稱: gpio.c                                                          *// 說  明: gpio驅動標頭檔  // Writor : Embbnux JI                                                *//------------------------------------------------------------------//-----------------------------------------------------------------------*#include "gpio.h"     //包含gpio標頭檔//-------------------------------------------------------------------------*    //函數名: gpio_rcc                                                        *    //功  能: 初始化gpio 時鐘                                                       *     //參  數: RCC_APB2Periph:連接埠時鐘    //            RCC_APB2Periph_GPIOx                                                          //        NewState:初始狀態,ENABLE=使能                                  *    //返  回: 無                                                               *    //說  明: 無    void gpio_rcc(uint32_t RCC_APB2Periph, FunctionalState NewState){     RCC_APB2PeriphClockCmd(RCC_APB2Periph,NewState);}//-------------------------------------------------------------------------*    //函數名: gpio_init                                                        *    //功  能: 初始化gpio                                                       *     //參  數: GPIOx:連接埠名                                                      *    //        index:指定連接埠引腳 16表示全選                                              *    //        dir:引腳方向,0=輸入,1=輸出                                       *     //        data:初始狀態,0=低電平,1=高電平                                  *    //返  回: 無                                                               *    //說  明: 無  void gpio_init (GPIO_TypeDef* GPIOx, int index, int dir,int data){        uint16_t gpio_pinx[17] ={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3, GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_6,GPIO_Pin_7, GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11, GPIO_Pin_12,GPIO_Pin_13,GPIO_Pin_14,GPIO_Pin_15,GPIO_Pin_All};        GPIO_InitTypeDef GPIO_InitStructure;        GPIO_InitStructure.GPIO_Pin = gpio_pinx[index]; // GPIO NoGPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // slow rise time    switch(dir){    case 1:     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // push-pull output     break;    case 0:     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉輸入     break;    }    GPIO_Init(GPIOx, &GPIO_InitStructure); // GPIOC init} //-------------------------------------------------------------------------*     //函數名: gpio_ctrl                                                        *    //功  能: 設定引腳狀態                                                     *    //參  數: GPIOx:連接埠名                                                      *    //        index:指定連接埠引腳                                               *    //        data: 狀態,0=低電平,1=高電平                                     *    //返  回: 無                                                               *    //說  明: 無                                                               *    //-------------------------------------------------------------------------*void gpio_ctrl (GPIO_TypeDef* GPIOx, int index, int data){   uint16_t gpio_pinx[17] ={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3, GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_6,GPIO_Pin_7, GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11, GPIO_Pin_12,GPIO_Pin_13,GPIO_Pin_14,GPIO_Pin_15,GPIO_Pin_All};    switch(data){    case 1:      GPIO_WriteBit(GPIOx,gpio_pinx[index],Bit_SET);      break;    case 0:      GPIO_WriteBit(GPIOx,gpio_pinx[index],Bit_RESET);      break;    }}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.