久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 嵌入式系統學習——STM32之GPIO

嵌入式系統學習——STM32之GPIO

關鍵字:嵌入式 STM32 GPIO 作者:admin 來源:不詳 發布時間:2018-05-18  瀏覽:60

 STM32庫函數說明及示例(版本V1.4.0)

----第一篇:GPIO庫

文檔說明和約定:

該文檔主要是對STM32F4各個模塊的庫進行翻譯和說明。文檔中加入了作者的一些理解,建議和小貼士。并且在文檔最后,加入了一些使用該庫模塊的案例。希望大家通過對該文檔的閱讀,可以更好的使用STM32的庫函數進行學習和項目開發。之所以選用1.4.0版本進行翻譯和說明,因為該版本群眾基礎較好,有大量的使用者和相關資料。后續也會推出新版本庫和CubeMX庫的翻譯和說明,希望大家喜歡和支持。如果大家覺得文檔有什么問題,麻煩請提出,如果確認問題存在,作者會及時修改。

相關術語說明:

gpio:通用輸入輸出接口

gpio管腳:一個io管腳,這個管腳可以有多個配置。在庫函數中用GPIO_Pin_1這樣的宏定義表示

gpio端口(gpio分組):一組gpio管腳的信息。在庫函數中用宏定義GPIOA GPIOB等表示

1 gpio庫說明

庫文件名:stm32f4xx_gpio.c

文檔提示翻譯:

如何使用這個驅動

(1) 使用RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE)函數使能GPIO的AHB總線時鐘。

(2) 使用GPIO_Init()函數對每個引腳進行四種可能的配置

《1》 輸入狀態:Floating(浮空), Pull-up(上拉), Pull-down(下拉)

《2》 輸出狀態:Push-Pull (上拉下拉)(Pull-up(上拉), Pull-down(下拉) or no Pull(不上拉也不下拉)),Open Drain(開漏) (Pull-up(上拉), Pull-down(下拉) or no Pull(不上拉也不下拉)),在輸出模式,速度配置成2MHZ,25MHZ,50MHZ和100MHZ.

《3》 第二功能:上拉下拉和開漏

《4》 模擬:當一個管腳被用作ADC通道或者DAC輸出的時候,需要配置成此模式

(3) 外設的第二功能:

《1》 在ADC和DAC模式,使用GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN把需要的管腳配置成模擬模式

《2》 對于其它的管腳(定時器,串口等):

l 使用GPIO_PinAFConfig()函數把管腳和需要的第二功能進行連接

l 使用GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF把需要的管腳配置成第二功能模式

l 通過成員變量GPIO_PuPd, GPIO_OType and GPIO_Speed選擇類型,上拉下拉和輸出速度

l 調用函數GPIO_Init()

(4) 在輸入模式,使用函數GPIO_ReadInputDataBit()得到配置好管腳的電平

(5) 在輸出模式,使用函數GPIO_SetBits()/GPIO_ResetBits()設置配置好IO的高低電平

(6) 在復位過程和剛剛復位后,第二功能是無效的,GPIO被配置成了輸入浮空模式(JTAG管腳除外)

(7) 當LSE振蕩器關閉的時候,LSE振蕩器管腳OSC32_IN和OSC32_OUT可以作為通過IO來使用(分別用PC14和PC15表示)。LSE的優先級高于GPIO函數

(8) 當HSE振蕩器關閉的時候,HSE振蕩器管腳OSC_IN和OSC_OUT可以作為通用IO(PH0,PH1)來使用。HSE的優先級高于GPIO函數。

2 具體函數說明

初始化和配置相關函數

1. void GPIO_DeInit(GPIO_TypeDef* GPIOx)

函數解釋:gpio的反初始化函數,該函數的作用是把GPIO相關的寄存器配置成上電復位后的默認狀態,在第一次初始化前或者不再使用某一個接口后可以調用該函數。

函數參數說明:GPIOx:gpio的分組,如GPIOA GPIOB GPIOC等的宏定義(這些宏定義在頭文件stm32f4xx.h中,由廠家寫好,我們直接使用即可)

2. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef*GPIO_InitStruct)

函數解釋:gpio的初始化函數,該函數的作用是對io進行初始化。

函數參數說明:(1)GPIOx:gpio的分組,如GPIOA GPIOB GPIOC等的宏定義。

(2)GPIO_InitStruct:gpio的初始化相關結構體。該結構體里面的成員變量決定了我們具體的初始化參數。以下進行說明:

l GPIO_Pin:指定具體的IO腳,如GPIO_Pin_0 GPIO_Pin_1這樣的宏定義,這些宏由廠家寫好,我們直接使用即可。

l GPIO_Mode:指定gpio的模式,有以下四種模式:

GPIO_Mode_IN(輸入),GPIO_Mode_OUT(輸出),GPIO_Mode_AF(第二功能),GPIO_Mode_AN(模擬),可以直接使用這四種宏定義。

l GPIO_Speed:指定IO的最快翻轉速度,也就是當使用IO產生頻率(如PWM)的最快速度。有以下四種速度的配置:

GPIO_Low_Speed (低速),GPIO_Medium_Speed(中等速度),GPIO_Fast_Speed(快速),GPIO_High_Speed(高速),可以直接使用這四種宏定義。

l GPIO_OType:指定選擇管腳的輸出類型,有以下兩種配置:

GPIO_OType_PP (推挽方式輸出),GPIO_OType_OD(開漏方式輸出),可以直接使用這兩種宏定義。

Tips:

推挽輸出:推挽輸出就是單片機引腳可以直接輸出高電平電壓。低電平時接地,高電平時輸出單片機電源電壓。這種方式可以不接上拉電阻。但如果輸出端可能會接地的話,這個時候輸出高電平可能引發單片機運行不穩定,甚至可能燒壞引腳。推挽方式的驅動力更大。

開漏輸出:開漏輸出就是不輸出電壓,低電平時接地,高電平時不接地。如果外接上拉電阻,則在輸出高電平時電壓會拉到上拉電阻的電源電壓。這種方式適合在連接的外設電壓比單片機電壓低的時候。

l GPIO_PuPd。指定選擇管腳的上拉和下拉模式。有如下三種配置:

GPIO_PuPd_NOPULL(不上拉也不下拉),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)。Tips:這些都是IO的內部上拉或者下拉模式,也可以接上拉和下拉電阻通過硬件進行外部上拉和外部下拉。

3. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)

函數解釋:gpio結構體的初始化。對GPIO_InitStruct結構體進行默認配置

函數參數說明:GPIO_InitStruct,直接傳入該結構體的指針,在該函數內會對結構體進行初始化。

4. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

函數解釋:鎖定gpio的寄存器,鎖定的寄存器是GPIOx_MODER,GPIOx_OTYPER, GPIOx_OSPEEDR,GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH。在下一次復位前,被鎖定的管腳不能被修改。

函數參數說明:GPIOx:gpio的分組(如GPIOA,GPIOB等)。GPIO_Pin:具體的gpio管腳(如GPIO_Pin_0 GPIO_Pin_1這樣的宏定義)

GPIO的讀寫函數

1. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin)

函數解釋:讀取io輸入管腳的值

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳

函數返回值說明:輸入管腳的值Bit_SET(高電平) Bit_RESET(低電平)

2. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)

函數解釋:讀取輸入io數據,該函數用于讀取一個IO分組的所有數據

函數參數說明:GPIOx:gpio的分組/gpio端口

函數返回值說明:一個io端口的所有數據 (輸入狀態)

3. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin)

函數解釋:讀取io輸出管腳的值

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳

函數返回值說明:輸出管腳的值Bit_SET(高電平) Bit_RESET(低電平)

4. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)

函數解釋:讀取輸出io分組/端口的值

函數參數說明:GPIOx:gpio的分組/gpio端口

函數返回值說明:一個io端口的所有數據 (輸出狀態)

5. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

函數解釋:對io管腳進行置位(輸出高電平)。這個函數使用GPIOx_BSRR寄存器來實現原子讀或者修改操作。在這種情況下,在讀和修改訪問時發生一個IRQ中斷是沒有危險的。

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳或者是io管腳的組合

6. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

函數解釋:對io管腳進行復位(輸出低電平)。這個函數使用GPIOx_BSRR寄存器來實現原子讀或者修改操作。在這種情況下,在讀和修改訪問時發生一個IRQ中斷是沒有危險的。

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳或者是io管腳的組合

7. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitActionBitVal)

函數解釋:對某一位進行寫入操作

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳;BitVal:寫入高電平或者低電平(Bit_RESET:寫入低電平 Bit_SET:寫入高電平)

8. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)

函數解釋:對gpio端口進行寫入操作,適用于對統一端口的多個管腳的寫入

函數參數說明:GPIOx:gpio的分組/gpio端口; BitVal:寫入高電平或者低電平(Bit_RESET:寫入低電平Bit_SET:寫入高電平)

9. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

函數解釋:翻轉指定的gpio口,也就是說,如果當前的io是低電平,則變成高電平,如果當前io是高電平,則變成低電平

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_Pin:具體的gpio管腳。

Gpio復用功能配置函數

1. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource,uint8_t GPIO_AF)

函數解釋:改變指定管腳的映射關系。即配置指定管腳的復用功能。

函數參數說明:GPIOx:gpio的分組/gpio端口;GPIO_PinSource:具體要配置成復用功能的管腳(如GPIO_Pin_0 GPIO_Pin_1這樣的宏定義);GPIO_AF:選擇該管腳要使用的復用功能。有如下配置:(注意:復用功能的配置要和實際管腳支持的復用功能匹配)

GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin toAF0 (default after reset)

GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2)to AF0 (default after reset)

GPIO_AF_TAMPER: Connect TAMPER pins(TAMPER_1 and TAMPER_2) to AF0 (default after reset)

GPIO_AF_SWJ: Connect SWJ pins (SWD andJTAG)to AF0 (default after reset)

GPIO_AF_TRACE: Connect TRACE pins to AF0(default after reset)

GPIO_AF_TIM1: Connect TIM1 pins to AF1

GPIO_AF_TIM2: Connect TIM2 pins to AF1

GPIO_AF_TIM3: Connect TIM3 pins to AF2

GPIO_AF_TIM4: Connect TIM4 pins to AF2

GPIO_AF_TIM5: Connect TIM5 pins to AF2

GPIO_AF_TIM8: Connect TIM8 pins to AF3

GPIO_AF_TIM9: Connect TIM9 pins to AF3

GPIO_AF_TIM10: Connect TIM10 pins to AF3

GPIO_AF_TIM11: Connect TIM11 pins to AF3

GPIO_AF_I2C1: Connect I2C1 pins to AF4

GPIO_AF_I2C2: Connect I2C2 pins to AF4

GPIO_AF_I2C3: Connect I2C3 pins to AF4

GPIO_AF_SPI1: Connect SPI1 pins to AF5

GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5

GPIO_AF_SPI4: Connect SPI4 pins to AF5

GPIO_AF_SPI5: Connect SPI5 pins to AF5

GPIO_AF_SPI6: Connect SPI6 pins to AF5

GPIO_AF_SAI1: Connect SAI1 pins to AF6 forSTM32F42xxx/43xxx devices.

GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6

GPIO_AF_I2S3ext: Connect I2S3ext pins toAF7

GPIO_AF_USART1: Connect USART1 pins to AF7

GPIO_AF_USART2: Connect USART2 pins to AF7

GPIO_AF_USART3: Connect USART3 pins to AF7

GPIO_AF_UART4: Connect UART4 pins to AF8

GPIO_AF_UART5: Connect UART5 pins to AF8

GPIO_AF_USART6: Connect USART6 pins to AF8

GPIO_AF_UART7: Connect UART7 pins to AF8

GPIO_AF_UART8: Connect UART8 pins to AF8

GPIO_AF_CAN1: Connect CAN1 pins to AF9

GPIO_AF_CAN2: Connect CAN2 pins to AF9

GPIO_AF_TIM12: Connect TIM12 pins to AF9

GPIO_AF_TIM13: Connect TIM13 pins to AF9

GPIO_AF_TIM14: Connect TIM14 pins to AF9

GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10

GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10

GPIO_AF_ETH: Connect ETHERNET pins to AF11

GPIO_AF_FSMC: Connect FSMC pins to AF12

GPIO_AF_FMC: Connect FMC pins to AF12 forSTM32F42xxx/43xxx devices.

GPIO_AF_OTG_HS_FS: Connect OTG HS(configured in FS) pins to AF12

GPIO_AF_SDIO: Connect SDIO pins to AF12

GPIO_AF_DCMI: Connect DCMI pins to AF13

GPIO_AF_LTDC: Connect LTDC pins to AF14 forSTM32F429xx/439xx devices.

GPIO_AF_EVENTOUT: Connect EVENTOUT pins toAF15

代碼示例:

示例一:把gpioa6配置成輸出管腳,并配置成高電平

GPIO_InitTypeDefGPIO_InitStruct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

GPIO_InitStruct.GPIO_Pin= GPIO_Pin_6;

GPIO_InitStruct.GPIO_Mode= GPIO_Mode_OUT;

GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_UP;

GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

示例二:把gpioe4配置成輸入

GPIO_InitTypeDefGPIO_InitStruct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);

GPIO_InitStruct.GPIO_Pin= GPIO_Pin_4;

GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IN;

GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_UP;

GPIO_Init(GPIOE,&GPIO_InitStruct);

示例三:配置復用功能 PA9 PA10 配置成串口1的收發接口

GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1時鐘

//串口1對應引腳復用映射

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//GPIOA9復用為USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//GPIOA10復用為USART1

//USART1端口配置

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9與GPIOA10

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;//復用功能

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_OType= GPIO_OType_PP; //推挽復用輸出

GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA9,PA10

編輯:admin  最后修改時間:2018-05-18

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
国产性生活一级片| 日日噜噜噜夜夜爽爽| 在线观看视频在线观看| 91最新在线观看| 韩国一区二区av| av观看免费在线| 成年人视频网站免费观看| 久久国产精品网| 国产免费黄色小视频| 青青青青在线视频| 久色视频在线播放| 国产第一页视频| 成人午夜激情av| 亚洲精品久久久久久宅男| 中文字幕亚洲乱码| 日韩欧美色视频| 亚洲乱码日产精品bd在线观看| 91蝌蚪视频在线| 高清无码一区二区在线观看吞精| 看一级黄色录像| 精品少妇人欧美激情在线观看| 亚洲精品少妇一区二区| 日韩欧美一区二| 亚洲精品无码久久久久久| 国产精品久久久久9999小说| 在线观看免费污视频| eeuss中文| 亚洲精品无码国产| 艹b视频在线观看| 男女h黄动漫啪啪无遮挡软件| 91免费国产精品| www.日日操| www国产免费| 日本毛片在线免费观看| 亚洲第一狼人区| 人人妻人人澡人人爽欧美一区双| av网站在线观看不卡| 午夜大片在线观看| 91黄色在线看| 亚洲一区在线不卡| 精品少妇人欧美激情在线观看| 久久久久狠狠高潮亚洲精品| 中文字幕第三区| 女人扒开屁股爽桶30分钟| 欧美少妇在线观看| 欧美成人黑人猛交| 真实国产乱子伦对白视频| 五月婷婷深爱五月| 黄www在线观看| 欧美图片激情小说| 午夜av中文字幕| 99草草国产熟女视频在线| av久久久久久| 国产高清av片| 一区二区三区四区毛片| 亚洲美免无码中文字幕在线 | 天天想你在线观看完整版电影免费| 欧美 日韩 国产 高清| 四虎影院一区二区| 久久久久久久久久久久久久久国产 | 红桃视频 国产| 男女爽爽爽视频| 男人的天堂日韩| 国产欧美高清在线| 茄子视频成人免费观看| 精品国产一区三区| 日本丰满少妇xxxx| 18禁裸男晨勃露j毛免费观看 | 国产毛片久久久久久国产毛片| 天堂在线中文在线| a在线观看免费视频| 日韩中文字幕a| 国产91色在线观看| 91女神在线观看| 日日干夜夜操s8| 在线观看av免费观看| 99久久99精品| 99久热在线精品视频| 国产精品久久久久9999爆乳| 黄网站欧美内射| 男人天堂网视频| 日韩大片一区二区| 香蕉视频在线网址| 国产va亚洲va在线va| 国产内射老熟女aaaa| 91黄色在线看| 精品久久久久av| av污在线观看| 成人免费看片视频在线观看| 六月婷婷激情综合| 福利在线一区二区三区| 在线播放 亚洲| 欧美,日韩,国产在线| 老司机午夜av| 自拍偷拍视频在线| 欧美成人免费在线观看视频| 日本www.色| 日韩视频一二三| 波多野结衣家庭教师在线| 精品999在线| 久久久久久久香蕉| www.色偷偷.com| 国产一级做a爰片久久毛片男| 六月丁香婷婷激情| 成年网站免费在线观看| 免费观看国产精品视频| 老司机av福利| 亚洲色图38p| 国产精品69久久久| 在线观看av免费观看| 黄色片网址在线观看| 久久久久久综合网| www.日日操| 黄色国产一级视频| 中文字幕色呦呦| 日韩成人av免费| 国产精品无码专区av在线播放| 国产精品免费看久久久无码| 91日韩视频在线观看| 蜜臀精品一区二区| av久久久久久| 波多野结衣激情| 99日在线视频| 亚洲第一狼人区| 一级特黄性色生活片| 国产二级片在线观看| 成人在线视频一区二区三区| 中文字幕一区二区三区四| 欧美黄色性生活| 国产xxxxx视频| 少妇激情一区二区三区| 国内外免费激情视频| 丰满爆乳一区二区三区| 菠萝蜜视频在线观看入口| 永久av免费在线观看| 国产欧美精品一二三| 超碰在线资源站| 国产av不卡一区二区| 男女爱爱视频网站| 日韩精品视频在线观看视频| 黄色三级中文字幕| 三上悠亚久久精品| 女性隐私黄www网站视频| 麻豆传传媒久久久爱| 91日韩视频在线观看| 亚洲午夜精品一区| 欧美在线a视频| 妺妺窝人体色777777| www.av毛片| 成年人免费大片| 日韩av片免费观看| 日韩欧美不卡在线| 成人午夜视频免费在线观看| 天天干天天干天天干天天干天天干| 黄色手机在线视频| 一级淫片在线观看| 人妻互换免费中文字幕| 欧美精品久久久久久久免费| 少妇高清精品毛片在线视频| 国产精品自拍视频在线| 久久www视频| 亚洲精品乱码久久久久久自慰| 超碰超碰在线观看| 国产69精品久久久久久久| 久久精品免费一区二区| 日韩中文字幕a| 国内少妇毛片视频| 中文字幕66页| 91免费黄视频| 欧洲美女亚洲激情| 国产超级av在线| 在线观看三级网站| 夫妻免费无码v看片| 黄色一级视频播放| 丰满少妇被猛烈进入高清播放| 国内国产精品天干天干| 黄www在线观看| 国产成人一区二区三区别| 色婷婷成人在线| 777久久久精品一区二区三区| 干日本少妇视频| 色婷婷激情视频| 九九九在线观看视频| 免费看又黄又无码的网站| 超碰91在线播放| 丰满少妇在线观看| 日韩小视频在线播放| 三级网在线观看| 美女少妇一区二区| 久久免费视频3| 成人黄色av片| 国产乱淫av片杨贵妃| 九九热视频免费| 九九热精品国产| 亚洲欧美视频二区| 一级黄色香蕉视频| 激情六月丁香婷婷| 日本国产在线播放| 色欲色香天天天综合网www| 国产欧美123|