版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、STM32 GPIO使 用操作步驟:1使能GPIO對(duì)應(yīng)的外設(shè)時(shí)鐘例如:/使能GPIOA GPIOB GPIOC對(duì)應(yīng)的外設(shè)時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE);2聲明一個(gè)GPIOnitStructure結(jié)構(gòu)體例如:GPIO_InitTypeDef GPIO_InitStructure;3選擇待設(shè)置的GPIO管腳例如:/*選擇待設(shè)置的GPIO第7、8 9管腳位,中間加“|符號(hào) */GPIO_InitStructure.GPIO_Pin=
2、GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;4設(shè)置選中GPIO管腳的速率例如:/*設(shè)置選中GPIO管腳的速率為最高速率2MHz */GPIOnitStructure.GPIO_Speed = GPIO_Speed_2MHZ最高速率 2MHz5設(shè)置選中GPIO管腳的模式例如:/*設(shè)置選中GPIO管腳的模式為開漏輸出模式*/GPIOn itStructure.GPIO_Mode = GPIO_Mode_Out_OD;開漏輸出模式6. 根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)GPIOX例如:/*根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)
3、 GPIOC */GPIO_Init(GPIOC, &GPIO_InitStructure);7. 其他應(yīng)用例:將端口 GPIOA的第10、15腳置1 (高電平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);例:將端口 GPIOA的第10、15腳置0 (低電平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO寄存器寄存器CRLCRHIDRODRBSRRBRRLCKREVCRMAPRI/OEXTICR苗述端口配置低寄存器端口配置高寄存器端口輸入數(shù)據(jù)寄存器端口輸出數(shù)據(jù)寄存器端口位設(shè)置
4、/ 復(fù)位寄存器端口位復(fù)位寄存器端口配置鎖定寄存器事件控制寄存器復(fù)用重映射和調(diào)試配置寄存器外部中斷線路 0-15 配置寄存器GPIO庫(kù)函數(shù):函數(shù)名描述GPIO_Delnit將外設(shè)GPIOx寄存器重設(shè)為缺省值GPIO_AFIODel ni將復(fù)用功能(重映射事件控制和 EXT設(shè)置)重設(shè)為缺省值GPIO_Init根據(jù)GPIO_InitStruct中指定的參數(shù)初始化外設(shè)GPIOx寄存器GPIO_Structlnit把GPIOnitStruct中的每一個(gè)參數(shù)按缺省值填入GPIO_Readl nputDataBi讀取指定端口管腳的輸入GPIO_ReadlnputData賣取指定的GPIO端口輸入GPIO_R
5、eadOutputDataBi讀取指定端口管腳的輸出GPIO_ReadOutputData讀取指定的GPIO端口輸出GPIO_SetBits設(shè)置指定的數(shù)據(jù)端口位GPIO_ResetBitS青除指定的數(shù)據(jù)端口位GPIO_WriteBit設(shè)置或者清除指定的數(shù)據(jù)端口位GPIO_Write向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù)GPIO_PinLockConfi鎖定GPIO管腳設(shè)置寄存器GPIO Eve ntOutputC on fig選擇GPIO管腳用作事件輸出GPIO_Eve ntOutputCmd使能或者失能事件輸出GPIO_Pi nRemapC onfi改變指定管腳的映射GPIO_EXTILineCon
6、fi選擇GPI0管腳用作外部中斷線路庫(kù)函數(shù):函數(shù) GPIO_Delnit功能描述:將外設(shè)GPIOx寄存器重設(shè)為缺省值例:GPIO_DeInit(GPIOA);函數(shù) GPIO_AFIODeInit功能描述:將復(fù)用功能(重映射事件控制和EXTI設(shè)置)重設(shè)為缺省值例:GPIO_AFIODeInit();函數(shù) GPIO_Init功能描述:根據(jù)GPIOnitStruct中指定的參數(shù)初始化外設(shè) GPIOx寄存器例:GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure
7、.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitTypeDef structureGPIOni tTypeDef定義于文件 “ stm32f10x_gpio.h ”typedef structu16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;GPIO_Pi
8、n該參數(shù)選擇待設(shè)置的GPIO管腳,使用操作符“ |可以一次選中多個(gè)管腳 可以使用下表中的任意組合。GPIO_Pin_None:GPIO_Pin_x:GPIO_Pin_Al:lGPIO_SpeedGPIO_Speed用以設(shè)置選中管腳的速率。無管腳被選中選中管腳 x(0- 1 5)選中全部管腳GPIO_Speed_10MH:z 最高輸出速率 10MHzGPIO_Speed_2MH:z 最高輸出速率 2MHzGPIO_Speed_50MH:z 最高輸出速率 50MHzGPIO_Mode 用以設(shè)置選中管腳的工作狀態(tài)。模擬輸入GPIO_Mode:GPIO_Mode_AIN:GPIO_Mode_IN_FL
9、OATING 浮空輸入GPIO_Mode_IPD 下拉輸入GPIO_Mode_IPU 上拉輸入開漏輸出推挽輸出復(fù)用開漏輸出復(fù)用推挽輸出GPIO_Mode_Out_OD:GPIO_Mode_Out_PP:GPIO_Mode_AF_OD:GPIO_Mode_AF_PP:函數(shù) GPIO_StructInit功能描述:把GPIO_InitStruct中的每一個(gè)參數(shù)按缺省值填入例:GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure);GPIO_InitStruct:GPIO_Pin:GPIO_Pin_A
10、ll GPIO_Speed:GPIO_Speed_2MHz GPIO_Mode:GPIO_Mode_IN_FLOATING 函數(shù) GPIO_ReadInputDataBit 功能描述:讀取指定端口管腳的輸入 例:u8 ReadValue;ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7); 函數(shù) GPIO_ReadInputData功能描述:讀取指定的GPIO端口輸入例:u16 ReadValue;ReadValue = GPIO_ReadInputData(GPIOC); 函數(shù) GPIO_ReadOutputDataBit 功能描述:讀取
11、指定端口管腳的輸出例:u8 ReadValue;ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7); 函數(shù) GPIO_ReadOutputData功能描述:讀取指定的GPIO端口輸出例:u16 ReadValue;ReadValue = GPIO_ReadOutputData(GPIOC);函數(shù) GPIO_SetBits功能描述:置位指定的數(shù)據(jù)端口位例:將端口 GPIOA的第10、15腳置1 (高電平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函數(shù) GPIO_ResetBits功能描述:
12、清除指定的數(shù)據(jù)端口位例:將端口 GPIOA的第10、15腳置0 (低電平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函數(shù) GPIO_WriteBit功能描述:設(shè)置或者清除指定的數(shù)據(jù)端口位例:GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);函數(shù) GPIO_Write功能描述:向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù)例:GPIO_Write(GPIOA, 0x1101); 函數(shù) GPIO_PinLockConfig功能描述:鎖定GPIO管腳設(shè)置寄存器例:GPIO_PinLockConfig(GPIOA, GPIO_
13、Pin_0 | GPIO_Pin_1);函數(shù) GPIO_EventOutputConfig功能描述:選擇GPIO管腳用作事件輸出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);GPIO_PortSourceGPIO_PortSource用以選擇用作事件輸出的 GPIO端 口。函數(shù) GPIO_EventOutputCmd功能描述:使能或者失能事件輸出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);GPIO_Even tOutputCmd(E
14、NABLE);函數(shù) GPIO_PinRemapConfig功能描述:改變指定管腳的映射例:GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);一.GPIO概述1、共有 8 種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出 (此模式可實(shí)現(xiàn) hotpower 說的真雙向 IO)6. 推挽輸出7. 復(fù)用功能的推挽輸出8. 復(fù)用功能的開漏輸出模式 7 和模式 8 需根據(jù)具體的復(fù)用功能決定。2、專門的寄存器(GPIOx_BSR和GPIOx_BRF實(shí)現(xiàn)對(duì)GPI0口的原子操作, 即回避了設(shè)置或清除 I/O 端口時(shí)的 “
15、讀-修改-寫”操作,使得設(shè)置或清除 I/O 端口 的操作不會(huì)被中斷處理打斷而造成誤動(dòng)作。3、每個(gè) G P I 0口都可以作為外部中斷的輸入,便于系統(tǒng)靈活設(shè)計(jì)。4、I/O 口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz), 這有利于噪聲控制。這個(gè)速度是指 I/0 口驅(qū)動(dòng)電路的響應(yīng)速度而不是輸出信號(hào)的 速度,輸出信號(hào)的速度與程序有關(guān)(芯片內(nèi)部在 I/O 口的輸出部分安排了多個(gè)響 應(yīng)速度不同的輸出驅(qū)動(dòng)電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動(dòng)電 路)。通過選擇速度來選擇不同的輸出驅(qū)動(dòng)模塊,達(dá)到最佳的噪聲控制和降低 功耗的目的。高頻的驅(qū)動(dòng)電路,噪聲也高,當(dāng)不需要高的輸出頻率時(shí),請(qǐng)
16、選用低頻驅(qū)動(dòng)電路,這樣非常有利于提高系統(tǒng)的 EMI 性能。當(dāng)然如果要 輸出較高頻率的信號(hào),但卻選用了較低頻率的驅(qū)動(dòng)模塊,很可能會(huì)得到失真的 輸出信號(hào)。4.1 各種借口的措施:4.1.1對(duì)于串口,假如最大波特率只需 115.2k,那么用2M的GPI0的引腳速 度就夠了,既省電也噪聲小。4.1.2對(duì)于I2C接口,假如使用400k波特率,若想把余量留大些,那么用 2M的GPIO的引腳速度或許不夠,這時(shí)可以選用 10M的GPIO引腳速度。4.1.3對(duì)于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳 速度顯然不夠了,需要選用 50M的GPIO的引腳速度。4.2GPI O 口設(shè)為輸入時(shí),
17、輸出驅(qū)動(dòng)電路與端口是斷開,所以輸出速度配置無 意義。4.3在復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O端口被配置成浮空輸入 模式。4.4所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸 入模式。4.5GPI O 口的配置具有上鎖功能,當(dāng)配置好 GPI O 口后,可以通過程序鎖住 配置組合,直到下次芯片復(fù)位才能解鎖。5、所有I/O 口兼容CMOS和TTL多數(shù)I/O 口兼容5V電平。6、大電流驅(qū)動(dòng)能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時(shí),可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時(shí),可以提供或吸收20mA電流。7、具有獨(dú)立的喚
18、醒 I/O 口。8、很多I/O 口的復(fù)用功能可以重新映射。9、GPI O 口的配置具有上鎖功能,當(dāng)配置好 GPI O 口后,可以通過程序鎖住配 置組合,直到下次芯片復(fù)位才能解鎖。此功能非常有利于在程序跑飛的情況下 保護(hù)系統(tǒng)中其他的設(shè)備,不會(huì)因?yàn)槟承?I/O 口的配置被改變而損壞 如一個(gè)輸 入口變成輸出口并輸出電流。二推挽結(jié)構(gòu)一般是指兩個(gè)三極管分別受兩互補(bǔ)信號(hào)的控制 ,總是在一個(gè)三極管導(dǎo)通的時(shí) 候另一個(gè)截止要實(shí)現(xiàn)線與需要用OC(open collector門電路.如果輸出級(jí)的有兩個(gè) 三極管,始終處于一個(gè)導(dǎo)通、一個(gè)截止的狀態(tài),也就是兩個(gè)三級(jí)管推挽相連, 這樣的電路結(jié)構(gòu)稱為推拉式電路或圖騰柱(Tot
19、em- pole )輸出電路(可惜,圖 無法貼上)。當(dāng)輸出低電平時(shí),也就是下級(jí)負(fù)載門輸入低電平時(shí),輸出端的電 流將是下級(jí)門灌入T4;當(dāng)輸出高電平時(shí),也就是下級(jí)負(fù)載門輸入高電平時(shí),輸 出端的電流將是下級(jí)門從本級(jí)電源經(jīng) T3、D1拉出。這樣一來,輸出高低電平 時(shí),T3一路和T4一路將交替工作,從而減低了功耗,提高了每個(gè)管的承受能 力。又由于不論走哪一路,管子導(dǎo)通電阻都很小,使RC常數(shù)很小,轉(zhuǎn)變速度很快。因此,推拉式輸出級(jí)既提高電路的負(fù)載能力,又提高開關(guān)速度。供你參 考。推挽電路是兩個(gè)參數(shù)相同的三極管或 MOSFET以推挽方式存在于電路中,各 負(fù)責(zé)正負(fù)半周的波形放大任務(wù) ,電路工作時(shí),兩只對(duì)稱的功率
20、開關(guān)管每次只有一 個(gè)導(dǎo)通,所以導(dǎo)通損耗小效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流三開漏電路在電路設(shè)計(jì)時(shí)我們常常遇到開漏(open drain)和開集(open collector)的 概念。所謂開漏電路概念中提到的 漏”就是指MOSFET的漏極。同理,開集電路 中的集”就是指三極管的集電極。開漏電路就是指以MOSFET的漏極為輸出的電路。一般的用法是會(huì)在漏極外部的電路添加上拉電阻。完整的開漏電路應(yīng)該由 開漏器件和開漏上拉電阻組成。組成開漏形式的電路有以下幾個(gè)特點(diǎn):1利用外部電路的驅(qū)動(dòng)能力,減少IC內(nèi)部的驅(qū)動(dòng)。當(dāng)IC內(nèi)部MOSFET通 時(shí),驅(qū)動(dòng)電流是從外部的 VCC流經(jīng)R pull-
21、up, MOSFET到GND。IC內(nèi)部?jī)H需很 下的柵極驅(qū)動(dòng)電流。如圖 1。2可以將多個(gè)開漏輸出的Pi n,連接到一條線上。形成 與邏輯”關(guān)系。如圖 1,當(dāng)PIN_A PIN_B PIN_C任意一個(gè)變低后,開漏線上的邏輯就為 0 了。這也 是I2C, SMBus等總線判斷總線占用狀態(tài)的原理。3可以利用改變上拉電源的電壓,改變傳輸電平。如圖2, IC的邏輯電平由電源Vcc1決定,而輸出高電平則由 Vcc2決定。這樣我們就可以用低電平邏輯 控制輸出高電平邏輯了。4開漏Pin不連接外部的上拉電阻,貝S只能輸出低電平(因此對(duì)于經(jīng)典的51 單片機(jī)的P0 口而言,要想做輸入輸出功能必須加外部上拉電阻,否則無
22、法輸出 高電平邏輯 )。5. 標(biāo)準(zhǔn)的開漏腳一般只有輸出的能力。添加其它的判斷電路,才能具備雙向 輸入、輸出的能力。應(yīng)用中需注意:1. 開漏和開集的原理類似,在許多應(yīng)用中我們利用開集電路代替開漏電路。 例如,某輸入Pin要求由開漏電路驅(qū)動(dòng)。則我們常見的驅(qū)動(dòng)方式是利用一個(gè)三極 管組成開集電路來驅(qū)動(dòng)它,即方便又節(jié)省成本。如圖 3。2. 上拉電阻R pull-up的阻值決定了邏輯電平轉(zhuǎn)換的沿的速度。阻值越大, 速度越低功耗越小。反之亦然。Push-Pull輸出就是一般所說的推挽輸出,在 CMOS電路里面應(yīng)該較CMOS 輸出更合適,應(yīng)為在CMOS里面的push-pull輸出能力不可能做得雙極那么 大。輸
23、出能力看IC內(nèi)部輸出極N管P管的面積。和開漏輸出相比,push- pull 的高低電平由IC的電源低定,不能簡(jiǎn)單的做邏輯操作等。push-pull是現(xiàn)在CMOS電路里面用得最多的輸出級(jí)設(shè)計(jì)方式。at91rm9200 GPIO模擬 I2C接口時(shí)注意!四.OG OD集電極開路門(集電極開路OC或源極開路OD)open-drain是漏極開路輸出的意思,相當(dāng)于集電極開路 (open-collector)輸 出,即ttl中的集電極開路(oc)輸出。一般用于線或、線與,也有的用于電流 驅(qū)動(dòng)。open-drain 是對(duì) mos 管而言, open-collector 是對(duì)雙極型管而言,在用法上 沒啥區(qū)別。開
24、漏形式的電路有以下幾個(gè)特點(diǎn):1利用外部電路的驅(qū)動(dòng)能力,減少IC內(nèi)部的驅(qū)動(dòng)。或驅(qū)動(dòng)比芯片電源電壓 高的負(fù)載 .2可以將多個(gè)開漏輸出的Pi n,連接到一條線上。通過一只上拉電阻,在不 增加任何器件的情況下,形成 與邏輯”關(guān)系。這也是I2C, SMBus等總線判斷總 線占用狀態(tài)的原理。如果作為圖騰輸出必須接上拉電阻。接容性負(fù)載時(shí),下降延是芯片內(nèi)的晶 體管,是有源驅(qū)動(dòng),速度較快;上升延是無源的外接電阻,速度慢。如果要求 速度高電阻選擇要小,功耗會(huì)大。所以負(fù)載電阻的選擇要兼顧功耗和速度。3. 可以利用改變上拉電源的電壓,改變傳輸電平。例如加上上拉電阻就可以 提供TTL/CMOS電平輸出等。4開漏Pin不連接外部的上拉電阻,貝S只能輸出低 電平。一般來說,開漏是用來連接不同電平的器件,匹配電平用的。5正常的CMOS輸出級(jí)是上、下兩個(gè)管子,把上面的管子去掉就是OPENDRAIN 了 。這種輸出的主要目的有兩個(gè):電平轉(zhuǎn)換和線與。6. 由于漏級(jí)開路,所以后級(jí)電路必須接一上拉電阻,上拉電阻
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生工程師工作總結(jié)
- 禮品包裝設(shè)計(jì)師的日常工作
- 2025版消防系統(tǒng)改造人工安裝費(fèi)用協(xié)議書3篇
- 關(guān)于公文處理工作規(guī)定的學(xué)習(xí)體會(huì)一、關(guān)于國(guó)家行政機(jī)關(guān)公文處理辦法
- 食品行業(yè)前臺(tái)工作總結(jié)
- 教研成果的學(xué)生產(chǎn)出評(píng)價(jià)
- 二零二五年度個(gè)人光伏發(fā)電貸款合同樣本3篇
- 二零二五年度新型建筑材料應(yīng)用個(gè)人房屋裝修合同模板
- 二零二五年度個(gè)人土地承包經(jīng)營(yíng)權(quán)租賃合同范本12篇
- 2025版鞋子行業(yè)市場(chǎng)趨勢(shì)分析與銷售預(yù)測(cè)合同3篇
- JJG 692-2010無創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護(hù)
- 飲料對(duì)人體的危害1
- 數(shù)字經(jīng)濟(jì)學(xué)導(dǎo)論-全套課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目三 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的策劃和生產(chǎn)
- 中考記敘文閱讀
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末提升試題
- GB/T 2462-1996硫鐵礦和硫精礦中有效硫含量的測(cè)定燃燒中和法
評(píng)論
0/150
提交評(píng)論