国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STM32】STM32學(xué)習(xí)筆記-GPIO相關(guān)API概述(06-1)

這篇具有很好參考價(jià)值的文章主要介紹了【STM32】STM32學(xué)習(xí)筆記-GPIO相關(guān)API概述(06-1)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

00. 目錄

scm api gpio,STM32F103,stm32,學(xué)習(xí),筆記,GPIO,江科大STM32,江科大

01. GPIO概述

文件:stm32f10x_gpio.h和stm32f10x_gpio.c

02. GPIO_Exported_Types

/** @defgroup GPIO_Exported_Types
  * @{
  */

#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
                                    ((PERIPH) == GPIOB) || \
                                    ((PERIPH) == GPIOC) || \
                                    ((PERIPH) == GPIOD) || \
                                    ((PERIPH) == GPIOE) || \
                                    ((PERIPH) == GPIOF) || \
                                    ((PERIPH) == GPIOG))

03. GPIOSpeed_TypeDef

/** 
  * @brief  Output Maximum frequency selection  
  */

typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

04. GPIOMode_TypeDef

/** 
  * @brief  Configuration Mode enumeration  
  */

typedef enum
{ GPIO_Mode_AIN = 0x0,			//模擬輸入
  GPIO_Mode_IN_FLOATING = 0x04,	//浮空輸入
  GPIO_Mode_IPD = 0x28,			//下拉輸入
  GPIO_Mode_IPU = 0x48,			//上拉輸入
  GPIO_Mode_Out_OD = 0x14,		//開(kāi)漏輸出
  GPIO_Mode_Out_PP = 0x10,		//推挽輸出
  GPIO_Mode_AF_OD = 0x1C,		//復(fù)用功能開(kāi)漏輸出
  GPIO_Mode_AF_PP = 0x18		//復(fù)用功能推挽輸出
}GPIOMode_TypeDef;

05. GPIO_InitTypeDef

/** 
  * @brief  GPIO Init structure definition  
  */

typedef struct
{
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define */

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins.
                                      This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;

06. BitAction

/** 
  * @brief  Bit_SET and Bit_RESET enumeration  
  */

typedef enum
{ Bit_RESET = 0,
  Bit_SET
}BitAction;

07. GPIO_pins_define

/** @defgroup GPIO_pins_define 
  * @{
  */

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */
#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!< All pins selected */

08. GPIO_Pin_sources

/** @defgroup GPIO_Pin_sources 
  * @{
  */

#define GPIO_PinSource0            ((uint8_t)0x00)
#define GPIO_PinSource1            ((uint8_t)0x01)
#define GPIO_PinSource2            ((uint8_t)0x02)
#define GPIO_PinSource3            ((uint8_t)0x03)
#define GPIO_PinSource4            ((uint8_t)0x04)
#define GPIO_PinSource5            ((uint8_t)0x05)
#define GPIO_PinSource6            ((uint8_t)0x06)
#define GPIO_PinSource7            ((uint8_t)0x07)
#define GPIO_PinSource8            ((uint8_t)0x08)
#define GPIO_PinSource9            ((uint8_t)0x09)
#define GPIO_PinSource10           ((uint8_t)0x0A)
#define GPIO_PinSource11           ((uint8_t)0x0B)
#define GPIO_PinSource12           ((uint8_t)0x0C)
#define GPIO_PinSource13           ((uint8_t)0x0D)
#define GPIO_PinSource14           ((uint8_t)0x0E)
#define GPIO_PinSource15           ((uint8_t)0x0F)

09. GPIO_Port_Sources

/** @defgroup GPIO_Port_Sources 
  * @{
  */

#define GPIO_PortSourceGPIOA       ((uint8_t)0x00)
#define GPIO_PortSourceGPIOB       ((uint8_t)0x01)
#define GPIO_PortSourceGPIOC       ((uint8_t)0x02)
#define GPIO_PortSourceGPIOD       ((uint8_t)0x03)
#define GPIO_PortSourceGPIOE       ((uint8_t)0x04)
#define GPIO_PortSourceGPIOF       ((uint8_t)0x05)
#define GPIO_PortSourceGPIOG       ((uint8_t)0x06)

10. GPIO相關(guān)函數(shù)匯總

void GPIO_DeInit(GPIO_TypeDef* GPIOx);
void GPIO_AFIODeInit(void);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
void GPIO_EventOutputCmd(FunctionalState NewState);
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);

11. GPIO_DeInit

void GPIO_DeInit(GPIO_TypeDef* GPIOx);
功能:
	將外設(shè) GPIOx 寄存器重設(shè)為缺省值
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
返回值:
	無(wú)

12. GPIO_AFIODeInit

void GPIO_AFIODeInit(void);
功能:
	將復(fù)用功能(重映射事件控制和 EXTI 設(shè)置)重設(shè)為缺省值
參數(shù):
	無(wú)
返回值:
	無(wú)

13. GPIO_Init

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
功能:
	根據(jù) GPIO_InitStruct 中指定的參數(shù)初始化外設(shè) GPIOx 寄存器
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_InitStruct:指向結(jié)構(gòu) GPIO_InitTypeDef 的指針,包含了外設(shè) GPIO 的配置信息    
返回值:
	無(wú)

14. GPIO_StructInit

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
功能:
	把 GPIO_InitStruct 中的每一個(gè)參數(shù)按缺省值填入
參數(shù):
	GPIO_InitStruct:指向結(jié)構(gòu) GPIO_InitTypeDef 的指針,待初始化   
返回值:
	無(wú)

參考實(shí)現(xiàn)

/**
  * @brief  Fills each GPIO_InitStruct member with its default value.
  * @param  GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will
  *         be initialized.
  * @retval None
  */
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}

15. GPIO_ReadInputDataBit

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
	讀取指定端口管腳的輸入
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_Pin:待讀取的端口位    
返回值:
	輸入端口管腳值

16. GPIO_ReadInputData

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
功能:
	讀取指定的 GPIO 端口輸入
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
返回值:
	GPIO輸入數(shù)據(jù)端口值

17. GPIO_ReadOutputDataBit

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
	讀取指定端口管腳的輸出
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_Pin:待讀取的端口位    
返回值:
	輸出端口管腳值

18. GPIO_ReadOutputData

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
功能:
	讀取指定的 GPIO端口輸出
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè) 
返回值:
	GPIO輸出數(shù)據(jù)端口值

19. GPIO_SetBits

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
	設(shè)置指定的數(shù)據(jù)端口位
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_Pin:待設(shè)置的端口位    
返回值:
	無(wú)

20. GPIO_ResetBits

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能:
	清除指定的數(shù)據(jù)端口位
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_Pin:待設(shè)置的端口位    
返回值:
	無(wú)

21. GPIO_WriteBit

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
功能:
	設(shè)置或者清除指定的數(shù)據(jù)端口位
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    GPIO_Pin:待設(shè)置或者清除指的端口位 
返回值:
	無(wú)

22. GPIO_Write

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
功能:
	向指定 GPIO 數(shù)據(jù)端口寫(xiě)入數(shù)據(jù)
參數(shù):
	GPIOx:x 可以是 A,B,C,D 或者 E,來(lái)選擇 GPIO 外設(shè)
    PortVal: 待寫(xiě)入端口數(shù)據(jù)寄存器的值
返回值:
	無(wú)

23. RCC_APB2PeriphClockCmd

/**
  * @brief  Enables or disables the High Speed APB (APB2) peripheral clock.
  * @param  RCC_APB2Periph: specifies the APB2 peripheral to gates its clock.
  *   This parameter can be any combination of the following values:
  *     @arg RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,
  *          RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,
  *          RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,
  *          RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,
  *          RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3,
  *          RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17,
  *          RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11     
  * @param  NewState: new state of the specified peripheral clock.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
功能:
	使能或者失能 APB2 外設(shè)時(shí)鐘
參數(shù):
	RCC_APB2Periph: 門(mén)控 APB2 外設(shè)時(shí)鐘
    NewState:指定外設(shè)時(shí)鐘的新?tīng)顟B(tài)
返回值:
	無(wú)    

24. 附錄

參考: 【STM32】江科大STM32學(xué)習(xí)筆記匯總文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861741.html

到了這里,關(guān)于【STM32】STM32學(xué)習(xí)筆記-GPIO相關(guān)API概述(06-1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包