




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
9個(gè)GPIO,140個(gè)引腳GPIO
A:PA0GPIO
B:PB0GPIO
C:PC0PA15PB15PC15GPIO
D:PD0
~PD15GPIO
E:PE0GPIO
F:PF0~PE15~
PF15GPIO
G:PG0
~
PG15GPIO
H:PH0
~
PH15GPIO
I
:PI0
~
PI11GPIO最簡單的功能是輸出高低電平,
GPIO還可以被設(shè)置為輸入功能,用于讀取外部輸入信號(hào),比如按鍵、開關(guān)等信號(hào)。很多高級(jí)外設(shè)也有功能引腳,并且是與GPIO共用的,具體引腳功能可以通過軟件編程設(shè)置對(duì)應(yīng)的寄存器內(nèi)容實(shí)現(xiàn)的。圖中最右邊的“I/O引腳”就是芯片實(shí)物的引腳,
焊接時(shí)用到。保護(hù)二極
管用于防止因?yàn)橐_外
部輸入電壓過高或過低
燒壞芯片,雖然有保護(hù)
作用,但這種保護(hù)也是
有限的,大電流大電壓
還是很容易燒毀芯片的,這要求實(shí)際應(yīng)用中我們
要注意保護(hù)芯片,必要
時(shí)設(shè)計(jì)引腳保護(hù)電路。圖中上半部分屬于引腳
輸入功能,通過一個(gè)電
阻和一個(gè)開關(guān)(可以通過寄存器控制開關(guān)狀態(tài))可以把輸入線拉高或者拉
低,這個(gè)電阻阻值大概
為4.7K~10K歐。做為普
通的輸入引腳,I/O引腳的電平通過觸發(fā)器后保
存在輸入數(shù)據(jù)寄存器內(nèi)。圖中上半部分屬于引腳輸入功能,通過一個(gè)電阻和一個(gè)開關(guān)(可以通過寄存器控制開關(guān)狀態(tài))可以把輸入線拉高或者拉低,這個(gè)電阻阻值大概為40K歐。做為普通的輸入引腳,I/O引腳的電平通過觸發(fā)器后保存在輸入數(shù)據(jù)寄存器內(nèi)。圖中下半部分是引腳輸出功能,通過一個(gè)
PMOS管和一個(gè)NMOS管組合而成一個(gè)反相器驅(qū)動(dòng)輸出。對(duì)于普通的引腳電平控制,根據(jù)需要設(shè)置置位或者復(fù)位寄存器的值,這兩個(gè)寄存器的值會(huì)改變輸出數(shù)據(jù)寄存器值,通過輸出控制電路驅(qū)動(dòng)反相器從而改變引腳的狀態(tài)。每個(gè)GPIO包括10個(gè)寄存器來配置GPIO的具體功能(每個(gè)引腳功能都是完全可以獨(dú)立配置,互不影響):GPIOx_MODER:GPIOx_OTYPER
:GPIO
端口模式寄存器GPIO
端口輸出類型寄存器GPIOx_OSPEEDR
:GPIO
端口輸出速度寄存器GPIOx_PUPDR
:GPIOx_IDR
:GPIOx_ODR
:GPIOx_BSRR
:GPIOx_LCKR
:GPIOx_AFRL
:GPIOx_AFRH
:GPIO
端口上拉/下拉寄存器GPIO
端口輸入數(shù)據(jù)GPIO
端口輸出數(shù)據(jù)寄存器
GPIO
端口置位/復(fù)位寄存器
GPIO
端口配置鎖定寄存器
GPIO
復(fù)用功能低位寄存器
GPIO
復(fù)用功能高位寄存器為實(shí)現(xiàn)不同工作條件要求,GPIO有8種工作模式:模式配置模式寄存器MODER位[0:1]輸出類型寄存器OTYPER位輸出速度寄存器OSPEEDER位上/下拉寄存器PUPDR位[0:1]輸入浮空00不使用不使用00輸入上拉0001輸入下拉0010模擬功能1100開漏通用輸出01100-速度2MHz01-速度25MHz速度50MHz速度100MHz00-無上下拉01-上拉下拉保留推挽通用輸出010復(fù)用推挽輸出100復(fù)用開漏輸出1011.
當(dāng)GPIOx_MODER模式寄存器位[1:0]設(shè)置為00,上/下拉寄存器PUPDR[1:0]位設(shè)置為00時(shí)2.
STM32復(fù)位之后默認(rèn)模式I/O引腳信號(hào)接入到施密特觸發(fā)器的輸入端,在每來一個(gè)AHB1(168MHz)時(shí)鐘脈沖就把輸入端的信號(hào)傳輸?shù)接|發(fā)器的輸出端,施密特觸發(fā)器的輸出端又是與輸入數(shù)據(jù)寄存器(GPIOx_IDR)連通的,所以該數(shù)據(jù)就保存在輸入數(shù)據(jù)寄存器內(nèi),寄存器本身就是一個(gè)存儲(chǔ)單元(起到緩沖區(qū)效果),所以輸入數(shù)據(jù)寄存器保存著I/O引腳電平。另外,CPU隨時(shí)都可以讀取寄存器數(shù)據(jù),從而得知當(dāng)前引腳狀態(tài)。1.
在浮空輸入模式基礎(chǔ)上使能輸入電路中的上拉開關(guān)2.
上拉開關(guān)由上/下拉寄存器PUPDR[0:1]設(shè)置為01來使能。1.
在浮空輸入模式基礎(chǔ)上使能輸入電路中的下拉開關(guān)2.
下拉開關(guān)由上/下拉寄存器PUPDR[0:1]設(shè)置為10來使能。1.
當(dāng)STM32需要進(jìn)行ADC或DAC轉(zhuǎn)換時(shí),需要把引腳設(shè)置為模擬輸入模式2.
該模式需要配合ADC或DAC外設(shè)使用,否則沒有意義。通用輸出模式就是做為普通用途的輸出模式,比如簡單地控制引腳輸出高低電平。GPIO的輸出是由一個(gè)PMOS管和一個(gè)NMOS管組合形成的反相器驅(qū)動(dòng)。1.
開漏電路概念中的“漏”是指MOS管的漏極(D),實(shí)際只是利用到NMOS管,PMOS管在開漏模式下是沒有用到的2.
設(shè)置輸出高電平時(shí)引腳實(shí)際是高組態(tài)目的:控制I/O引腳開漏輸出高電平。STM32實(shí)際流程:CPU把端口位設(shè)置/清除寄存器(GPIOx_BSRR)引腳對(duì)應(yīng)外設(shè)置為1,然后驅(qū)動(dòng)端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)對(duì)應(yīng)位為1,實(shí)際上也可以讓CPU直接往GPIOx_ODR寄存器引腳對(duì)應(yīng)位寫入1。GPIOx_ODR寄存器通過一個(gè)選擇電路(與復(fù)用功能輸出做選擇)后輸入到輸出控制電路,經(jīng)過輸出控制電路后在NMOS控制線輸出低電平,這時(shí)NMOS管截止(PMOS管不被激活),引腳呈高阻狀態(tài),不會(huì)有電流流動(dòng)。目的:控制I/O引腳開漏輸出低電平。STM32實(shí)際流程:CPU把端口位設(shè)置/清除寄存器(GPIOx_BSRR)對(duì)應(yīng)引腳位復(fù)位置為1,然后驅(qū)動(dòng)輸出數(shù)據(jù)寄存器(GPIOx_ODR)對(duì)應(yīng)位為0,實(shí)際上也可以讓CPU直接望GPIOx_ODR寄存器引腳對(duì)應(yīng)位寫入0。GPIOx_ODR寄存器通過一個(gè)選擇電路(與復(fù)用功能輸出做選擇)后輸入到輸出控制電路,經(jīng)過輸出控制電路后在NMOS控制線輸出高電平,這時(shí)NMOS管導(dǎo)通(PMOS管不被激活),引腳呈低電平狀態(tài),允許有電流從引腳流入。另外,整個(gè)過程施密特觸發(fā)輸入是被被激活的,出現(xiàn)在I/O腳上的數(shù)據(jù)在每個(gè)AHB1時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器,對(duì)輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)。1.
推挽輸出把PMOS管和NMOS管都用上2.
設(shè)置輸出高電平時(shí)引腳實(shí)際是有電流從引腳流出一個(gè)I/O引腳可以做為普通的IO接口,還可以做為其他外設(shè)的特殊功能引腳,有些引腳可能有4、5種不同功能,這種現(xiàn)象就叫做復(fù)用。引腳復(fù)用為特殊功能引腳,那引腳狀態(tài)就由該外設(shè)決定。開漏模式就是在推挽模式下減少P-MOS管的使用。當(dāng)PH9、PE5和PE6引腳輸出高電平時(shí)對(duì)應(yīng)的LED燈亮,低電平時(shí)LED燈滅。毫無疑問,編程時(shí)PH9、PE5和PE6引腳要設(shè)置為普通輸出模式,不是復(fù)用輸出模式、更不可能是輸入模式,那需要開漏輸出、還是推挽輸出、還是開漏或推挽都可以呢?顯
然,為使得LED燈亮,PH9、PE5和PE6引腳需要輸出高電平,并且需要輸出電流,顯然就需要設(shè)置為推挽輸出模式,因?yàn)槿绻麨殚_漏模式,回流中不會(huì)有電流,沒有電流LED燈當(dāng)
然不會(huì)亮了。雖然CubeMX軟件確實(shí)給我們提供很大的便利,但很多新手都不知道它大概能提供到什么程度。簡單一句概括:提供外設(shè)初始化配置,不提供應(yīng)用程序。CubeMX軟件就是提供PH9、PE5和PE6三個(gè)引腳的初始化配置,我們剛好配置它們輸出高電平,所以燈就亮了。至于要讓LED燈閃爍就屬于用戶應(yīng)用程序了,就需要我們自己實(shí)現(xiàn)了。因?yàn)镃ubeMX軟件生成的代碼注釋部分全部是英文,結(jié)構(gòu)也是比較繁瑣,考慮到大部分初學(xué)者方便,我們會(huì)對(duì)Keil
V5和IAR工程結(jié)構(gòu)和內(nèi)容進(jìn)行對(duì)應(yīng)的改動(dòng),使得更容易理解至少注釋是中文的。這里我們新建了一個(gè)名為“bsp”的組件,專門用來存放YS-F4Pro開發(fā)板板載外設(shè)的驅(qū)動(dòng)文件,比如圖中的bsp_led.c就是開發(fā)板上3個(gè)LED的驅(qū)動(dòng)實(shí)現(xiàn),并實(shí)現(xiàn)了簡單的控制函數(shù)方便使用。類似bsp_led.c、bsp_led.h、bsp_usart.c、bsp_usart.h等等文件都是我們自己創(chuàng)建的,與STM32CubeMX軟件生成的gpio.c、gpio.h、usart.c、usart.h等等文件是存在差別的,我們的驅(qū)動(dòng)文件是以開發(fā)板模塊功能為基礎(chǔ)的,CubeMX軟件是以外設(shè)分類的,所以我們的驅(qū)動(dòng)文件實(shí)際上是在CubeMX軟件生成的*.c和*.h文件基礎(chǔ)上再次編輯而成的,我們的驅(qū)動(dòng)文件好處就是新工程程序移植非常方便。HAL庫為每個(gè)外設(shè)(GPIO除外)創(chuàng)建了兩個(gè)結(jié)構(gòu)體,一個(gè)是外設(shè)初始化結(jié)構(gòu)體,一個(gè)是外設(shè)句柄結(jié)構(gòu)體,其中GPIO沒有句柄結(jié)構(gòu)體。這兩個(gè)結(jié)構(gòu)體都是定義在外設(shè)對(duì)應(yīng)的驅(qū)動(dòng)頭文件中,比如
stm32f4xx_hal_usart.h文件。初始化結(jié)構(gòu)一般是做為句柄結(jié)構(gòu)體的一個(gè)成員通過指針被引用,而句柄結(jié)構(gòu)體則在外設(shè)HAL函數(shù)庫實(shí)現(xiàn)被使用,比如在stm32f4xx_hal_usart.c文件。這兩個(gè)結(jié)構(gòu)體內(nèi)容幾乎包括了外設(shè)的所有可選屬性,理解這兩個(gè)結(jié)構(gòu)體內(nèi)容對(duì)我們編程非常有幫助。
Pin:引腳編號(hào)選擇,一個(gè)GPIO外設(shè)有16個(gè)引腳可選,這里根據(jù)電路原理圖選擇目標(biāo)引腳,參數(shù)可選:GPIO_PIN_0
、…、GPIO_PIN_15
和GPIO_PIN_ALL
。很多時(shí)候我們可以使用或運(yùn)算選擇多個(gè):
GPIO_PIN_0|GPIO_PIN_4。Mode:引腳工作模式選擇,前面內(nèi)容介紹了引腳有八種基本工作模式,選擇結(jié)合到具體的外設(shè)可以有12種模式可選引腳工作模式功能說明GPIO_MODE_INPUT浮空輸入模式GPIO_MODE_OUTPUT_PP推挽輸出模式GPIO_MODE_OUTPUT_OD開漏輸出模式GPIO_MODE_AF_PP推挽復(fù)用功能輸出模式GPIO_MODE_AF_OD開漏復(fù)用功能輸出模式GPIO_MODE_ANALOG模擬輸入模式GPIO_MODE_IT_RISING外部中斷模式:上升沿觸發(fā)GPIO_MODE_IT_FALLING外部中斷模式:下降沿觸發(fā)GPIO_MODE_IT_RISING_FALLING外部中斷模式:上升沿和下降沿都觸發(fā)GPIO_MODE_EVT_RISING外部事件模式:上升沿觸發(fā)GPIO_MODE_EVT_FALLING外部事件模式:下降沿觸發(fā)GPIO_MODE_EVT_RISING_FALLING外部事件模式:上升沿和下降沿都觸發(fā)Pull:上拉或者下拉選擇,用于輸入模式,可選:GPIO_NOPULL:不上下來;
GPIO_PULLUP
:使能上拉;
GPIO_PULLDOWN:使能下拉。Speed
:引腳最大輸出速度,可選:
GPIO_SPEED_FREQ_LOW:低速(2MHz);中速(10MHz)
;快速(50MHz)
;高速(100MHz)。Alternate:引腳復(fù)用功能的選擇。具體看“s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45191-2025桑蠶一代雜交種
- 混凝土硬化路施工方案
- 板房防水卷材施工方案
- TSHAEPI 014-2024 溫室氣體(二氧化碳和甲烷)走航監(jiān)測技術(shù)規(guī)范
- 二零二五年度網(wǎng)絡(luò)安全就業(yè)協(xié)議書協(xié)議內(nèi)容詳盡規(guī)范
- 二零二五年度股權(quán)投資公司股東合作協(xié)議
- 2025年度軟裝行業(yè)市場監(jiān)測與風(fēng)險(xiǎn)評(píng)估合同
- 二零二五年度廣東省房屋租賃合同租賃保險(xiǎn)合作協(xié)議
- 二零二五年度娛樂產(chǎn)業(yè)動(dòng)漫IP授權(quán)使用勞動(dòng)合同
- 二零二五年度店鋪轉(zhuǎn)讓定金及品牌授權(quán)使用合同
- 爐外精煉說課
- GB/T 23111-2008非自動(dòng)衡器
- GB/T 18877-2020有機(jī)無機(jī)復(fù)混肥料
- GA/T 1073-2013生物樣品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、異丙醇和正丁醇的頂空-氣相色譜檢驗(yàn)方法
- 三大構(gòu)成之立體構(gòu)成-課件
- DB11 938-2022 綠色建筑設(shè)計(jì)標(biāo)準(zhǔn)
- 最新家政服務(wù)員培訓(xùn)課件
- 2022譯林版新教材高一英語必修二單詞表及默寫表
- 全國青少年機(jī)器人技術(shù)等級(jí)考試:二級(jí)培訓(xùn)全套課件
- TB T2075-《電氣化鐵道接觸網(wǎng)零部件》
- NB∕T 10730-2021 煤礦井下斷層導(dǎo)水性探查與治理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論