版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、STM32 GPIO® 用操作步驟:1 .使能GPIO對應(yīng)的外設(shè)時鐘例如:/使能GPIOA GPIOB GPIOC寸應(yīng)的外設(shè)時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE);2 . 聲明一個GPIO_InitStructure 結(jié)構(gòu)體例如:GPIO_InitTypeDef GPIO_InitStructure;3 .選擇待設(shè)置的GPIO管腳例如:/*選擇待設(shè)置的GPIO第7、8、9管腳位,中間加“ |"符號*/GPIO_In
2、itStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;4 .設(shè)置選中GPIO管腳的速率例如:/*設(shè)置選中GPIO管腳的速率為最高速率2MHz */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; / 最高速率2MHz5 .設(shè)置選中GPIO管腳的模式例如:/*設(shè)置選中GPIO管腳的模式為開漏輸出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; / 開漏輸出模式6 . 根據(jù) GPIO_InitStructure 中指定的參數(shù)初始化
3、外設(shè)GPIOX例如: /* 根據(jù) GPIO_InitStructure 中指定的參數(shù)初始化外設(shè)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_DeInit將外設(shè)GPIOx寄存器重設(shè)為缺省值GPIO寄存器:寄存器描述
4、CRL CRH IDR ODR BSRR BRR LCKR EVCR MAPR I/O EXTICR端口配置低寄存器端口配置高寄存器端口輸入數(shù)據(jù)寄存器端口輸出數(shù)據(jù)寄存器端口位設(shè)置/復(fù)位寄存器端口位復(fù)位寄存器端口配置鎖定寄存器事件控制寄存器復(fù)用重映射和調(diào)試配置寄存器外部中斷線路0-15配置寄存器GPIO庫函數(shù):描述函數(shù)名GPIO_AFIODeInit 將復(fù)用功能(重映射事件控制和EXTI 設(shè)置)重設(shè)為缺省值GPIO_Init根據(jù)GPIO_InitStruct中指定的參數(shù)初始化外設(shè)GPIOx寄存器GPIO_StructInit把GPIO_InitStruct中的每一個參數(shù)按缺省值填入GPIO_Re
5、adInputDataBitGPIO_ReadInputData讀取指定端口管腳的輸入讀取指定的GPIO端口輸入GPIO_ReadOutputDataBit GPIO_ReadOutputData GPIO_SetBits GPIO_ResetBits GPIO_WriteBit GPIO_Write GPIO_PinLockConfig GPIO_EventOutputConfig GPIO_EventOutputCmd GPIO_PinRemapConfig GPIO_EXTILineConfig讀取指定端口管腳的輸出讀取指定的GPIO端口輸出設(shè)置指定的數(shù)據(jù)端口位清除指定的數(shù)據(jù)端口位設(shè)置或
6、者清除指定的數(shù)據(jù)端口位向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù) 鎖定GPIO管腳設(shè)置寄存器 選擇GPIO管腳用作事件輸出 使能或者失能事件輸出改變指定管腳的映射選擇GPIO管腳用作外部中斷線路庫函數(shù): 函數(shù) GPIO_DeInit功能描述:將外設(shè)GPIOx 寄存器重設(shè)為缺省值例:GPIO_DeInit(GPIOA);函數(shù) GPIO_AFIODeInit功能描述:將復(fù)用功能(重映射事件控制和EXTI 設(shè)置)重設(shè)為缺省值例:GPIO_AFIODeInit();函數(shù) GPIO_Init功能描述:根據(jù)GPIO_InitStruct 中指定的參數(shù)初始化外設(shè)GPIOx 寄存器例:GPIO_InitTypeDef G
7、PIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitTypeDef structureGPIO_InitTypeDef 定義于文件“ stm32f10x_gpio.h” :typedef structu16 GPIO_Pin
8、;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;GPIO_Pin該參數(shù)選擇待設(shè)置的GPIO 管腳,使用操作符“| ”可以一次選中多個管腳??梢允褂孟卤碇械娜我饨M合。GPIO_Pin_None:無管腳被選中GPIO_Pin_x:選中管腳x( 0-15)GPIO_Pin_All:選中全部管腳GPIO_SpeedGPIO_Speed:用以設(shè)置選中管腳的速率。GPIO_Speed_10MHz:最高輸出速率10MHzGPIO_Speed_2MHz:最高輸出速率2MHzGPIO_Speed_50MHz:最高
9、輸出速率50MHzGPIOMode用以設(shè)置選中管腳的工作狀態(tài)。GPIOMode:GPIOModeAIN :模擬輸入GPIO_Mode_IN_FLOATING : 浮空輸入GPIO_Mode_IPU:上拉輸入GPIO_Mode_Out_OD :開漏輸出GPIO_Mode_Out_PP:推挽輸出GPIO_Mode_AF_OD:復(fù)用開漏輸出GPIO_Mode_AF_PP:復(fù)用推挽輸出函數(shù) GPIO_StructInit功能描述:把GPIO_InitStruct 中的每一個參數(shù)按缺省值填入例:GPIO_InitTypeDef GPIO_InitStructure;GPIO_StructInit(&am
10、p;GPIO_InitStructure);GPIO_InitStruct:GPIO_Pin: GPIO_Pin_AllGPIO_Speed: GPIO_Speed_2MHzGPIO_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_
11、ReadInputData(GPIOC);函數(shù) GPIO_ReadOutputDataBit功能描述:讀取指定端口管腳的輸出例: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(G
12、PIOA, GPIO_Pin_10 | GPIO_Pin_15);函數(shù) GPIO_ResetBits功能描述:清除指定的數(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_PinLock
13、Config功能描述:鎖定GPIO 管腳設(shè)置寄存器例:GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);函數(shù) GPIO_EventOutputConfig功能描述:選擇GPIO 管腳用作事件輸出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);GPIO_PortSourceGPIO_PortSource用以選擇用作事件輸出的 GPIO端口。功能描述:使能或者失能事件輸出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GP
14、IO_PinSource6);GPIO_EventOutputCmd(ENABLE);函數(shù) GPIO_PinRemapConfig功能描述:改變指定管腳的映射例:GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);一.GPIO概述1、共有 8 種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出 ( 此模式可實現(xiàn)hotpower 說的真雙向IO)6. 推挽輸出7. 復(fù)用功能的推挽輸出8. 復(fù)用功能的開漏輸出 模式 7 和模式 8 需根據(jù)具體的復(fù)用功能決定。2、專門的寄存器(GPIOx_BSR前口 GPIOx_
15、BRR在現(xiàn)對GPIO 口的原子操作,即回避了設(shè)置 或清除 I/O 端口時的“讀 -修改 -寫”操作, 使得設(shè)置或清除I/O 端口的操作不會被中斷處理打斷而造成誤動作。3、每個GPIO 口都可以作為外部中斷的輸入,便于系統(tǒng)靈活設(shè)計。4、I/O 口的輸出模式下,有 3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲 控制。 這個速度是指I/O 口驅(qū)動電路的響應(yīng)速度而不是輸出信號的速度,輸出信號的速度與程序有關(guān) (芯片內(nèi)部在I/O 口的輸出部分安排了多個響應(yīng)速度不同的輸出驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路)。 通過選擇速度來選擇不同的輸出驅(qū)動模塊,達(dá)到最佳的噪聲控制和
16、降低功耗的目的。高頻的驅(qū)動電路,噪聲也高,當(dāng)不需要高的輸出頻率時,請選用低頻驅(qū)動電路,這樣非常有利于提高系統(tǒng)的EMI 性能。 當(dāng)然如果要輸出較高頻率的信號,但卻選用了較低頻率的驅(qū)動模塊,很可能會得到失真的輸出信號。1.1 各種借口的措施:1.1.1 對于串口,假如最大波牛I率只需 115.2k ,那么用2M的GPIO的引腳速度就夠了, 既省電也噪聲小。1.1.2 對于I2C接口,假如使用 400k波特率,若想把余量留大些,那么用 2M的GPIO 的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。1.1.3 對于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不
17、夠了,需要選用 50M的GPIO的引腳速度。1.2 GPIO設(shè)為輸入時,輸出驅(qū)動電路與端口是斷開,所以輸出速度配置無意義。1.3 在復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O 端口被配置成浮空輸入模式。1.4 所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。1.5 GPIO的配置具有上鎖功能,當(dāng)配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復(fù)位才能解鎖。5、所有I/O 口兼容CMO麗TTL,多數(shù)I/O 口兼容5V電平。6、大電流驅(qū)動能力:GPIO 口在高低電平分別為 0.4V和VDD-0.4V時,可以提供或吸收 8mA電流;如果把輸入輸出電平分別放寬到1.3V
18、和VDD-1.3V時,可以提供或吸收 20mA電流。7、具有獨(dú)立的喚醒I/O 口。8. 很多 I/O 口的復(fù)用功能可以重新映射。9. GPIO 的配置具有上鎖功能,當(dāng)配置好GPIO 口后,可以通過程序鎖住配置組合,直到下次芯片復(fù)位才能解鎖。此功能非常有利于在程序跑飛的情況下保護(hù)系統(tǒng)中其他的設(shè)備,不會因為某些I/O 口的配置被改變而損壞如一個輸入口變成輸出口并輸出電流。二推挽結(jié)構(gòu)一般是指兩個三極管分別受兩互補(bǔ)信號的控制, 總是在一個三極管導(dǎo)通的時候另一個截止 . 要實現(xiàn)線與需要用OC(open collector) 門電路. 如果輸出級的有兩個三極管,始終處于一個導(dǎo)通、一個截止的狀態(tài),也就是兩個
19、三級管推挽相連,這樣的電路結(jié)構(gòu)稱為推拉式電路或圖騰柱(Totem- pole )輸出電路(可惜,圖無法貼上)。當(dāng)輸出低電平時,也就是下級負(fù)載門輸入低電平時,輸出端的電流將是下級門灌入T4;當(dāng)輸出高電平時,也就是下級負(fù)載門輸入高電平時,輸出端的電流將是下級門從本級電源經(jīng)T3、 D1 拉出。這樣一來,輸出高低電平時,T3 一路和T4 一路將交替工作,從而減低了功耗,提高了每個管的承受能力。又由于不論走哪一路,管子導(dǎo)通電阻都很小,使RC常數(shù)很小,轉(zhuǎn)變速度很快。因此,推拉式輸出級既提高電路的負(fù)載能力,又提高開關(guān)速度。供你參考。推挽電路是兩個參數(shù)相同的三極管或MOSFET推挽方式存在于電路中,各負(fù)責(zé)正負(fù)
20、半周的波形放大任務(wù), 電路工作時,兩只對稱的功率開關(guān)管每次只有一個導(dǎo)通,所以導(dǎo)通損耗小效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流三開漏電路在電路設(shè)計時我們常常遇到開漏( open drain ) 和開集(open collector )的概念。所謂開漏電路概念中提到的“漏”就是指MOSFET勺漏極。同理,開集電路中的“集”就是指三極管的集電極。開漏電路就是指以MOSFET勺漏極為輸出的電路。一般的用法是會在漏極外部的電路添加上拉電阻。完整的開漏電路應(yīng)該由開漏器件和開漏上拉電阻組成。組成開漏形式的電路有以下幾個特點:1. 利用 外部電路的驅(qū)動能力,減少 IC內(nèi)部的驅(qū)動。當(dāng)IC內(nèi)部MOS
21、FETf通時,驅(qū) 動電流是從外部的 VCC經(jīng)R pull-up , MOSFE倒GND IC內(nèi)部僅需很下的柵極驅(qū)動電 流。如圖1。2. 可以將多個開漏輸出的Pin , 連接到一條線上。形成 “與邏輯”關(guān)系。 如圖1,當(dāng)PIN_A、PIN_B、PIN_C任意一個變低后,開漏線上的邏輯就為0 了。這也是I2C, SMBus等總線判斷總線占用狀態(tài)的原理。3. 可以利用改變上拉電源的電壓,改變傳輸電平。如圖 2, IC 的邏輯電平由電源Vcc1決定, 而輸出高電平則由Vcc2 決定。 這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。4. 開漏 Pin 不連接外部的上拉電阻,則只能輸出低電平( 因此對于
22、經(jīng)典的51 單片機(jī)的P0 口而言,要想做輸入輸出功能必須加外部上拉電阻,否則無法輸出高電平邏輯)。5. 標(biāo)準(zhǔn)的開漏腳一般只有輸出的能力。添加其它的判斷電路,才能具備雙向輸入、輸出的能力。應(yīng)用中需注意:1. 開漏和開集的原理類似,在許多應(yīng)用中我們利用開集電路代替開漏電路。例如,某輸入 Pin 要求由開漏電路驅(qū)動。則我們常見的驅(qū)動方式是利用一個三極管組成開集電路來驅(qū)動它,即方便又節(jié)省成本。如圖3。2. 上拉電阻R pull-up 的 阻值 決定了邏輯電平轉(zhuǎn)換的沿的速度。 阻值越大,速度越低功耗越小。反之亦然。Push-Pull輸出就是一般所說的推挽輸出,在CMOSI路里面應(yīng)該較CMO編出更合適,
23、應(yīng)為在CMOSI面的push - pull輸出能力不可能做得雙極那么大。輸出能力看 IC內(nèi)部輸出 極N管P管的面積。和開漏輸出相比,push - pull的高低電平由IC的電源低定,不能簡單的做邏輯操作等。push - pull是現(xiàn)在CMOSI路里面用得最多的輸出級設(shè)計方式。at91rm9200 GPIO 模擬 I2C 接口時注意!四.OC、 OD集電極開路門( 集電極開路OC 或源極開路OD)open-drain 是漏極開路輸出的意思,相當(dāng)于集電極開路(open-collector) 輸出,即ttl 中的集電極開路(oc)輸出。一般用于線或、線與,也有的用于電流驅(qū)動。open-drain 是
24、對mos管而言,open-collector是對雙極型管而言,在用法上沒啥區(qū)別。開漏形式的電路有以下幾個特點:1. . 利用外部電路的驅(qū)動能力,減少 IC 內(nèi)部的驅(qū)動?;蝌?qū)動比芯片電源電壓高的負(fù)載.2. 可以將多個開漏輸出的Pin ,連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系。 這也是I2C, SMBu舞總線判斷總線占用狀態(tài)的原理。如果作為圖騰輸出必須接上拉電阻。接容性負(fù)載時,下降延是芯片內(nèi)的晶體管,是有源驅(qū)動,速度較快;上升延是無源的外接電阻,速度慢。如果要求速度高電阻選擇要小,功耗會大。所以負(fù)載電阻的選擇要兼顧功耗和速度。3. 可以利用改變上拉電源的電壓,改變傳輸電平。例如加上上拉電阻就可以提供TTL/CMOSfe平輸出等。4. 開漏 Pin 不連接外部的上拉電阻,則只能輸出低電平。一般來說,開漏是用來連接不同電平的器件,匹配電平用的。5. 正常的CMOS俞出級是上、下兩個管子,把上面的管子去掉就是OPEN-DRAINT。這種輸出的主要目的有兩個:電平轉(zhuǎn)換和線與。6. 由于漏級開路,所以后級電路必須接一上拉電阻,上拉電阻的電源電壓就可以決定輸出電平。這樣你就可以進(jìn)行任意電平的轉(zhuǎn)換了。7. 線與功能主要用于有多個電路對同一信號進(jìn)行拉低操作的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025車輛抵債合同書
- 2025煉化工程建設(shè)總承包合同
- 2025油漆工程承包合同
- 2024-2025學(xué)年新教材高中語文 第七單元 16.2 登泰山記說課稿(1)部編版必修上冊
- 2024-2025學(xué)年高中地理 第1章 旅游和旅游資源 第2節(jié) 旅游資源的類型說課稿 中圖版選修3
- 二手房交易時合同范例
- 飲料公司組建方案
- 《 負(fù)數(shù)》(說課稿)-2023-2024學(xué)年六年級下冊數(shù)學(xué)人教版
- 石材礦山起料方案
- 鑄造企業(yè)整治方案制定
- 2024年廣東省公務(wù)員考試《行測》真題及答案解析
- 上海市2024年中考化學(xué)真題(含答案)
- 油氣儲運(yùn)節(jié)能優(yōu)化方案
- 物流公司員工守則以及管理制度
- 2024人形機(jī)器人產(chǎn)業(yè)半年研究報告
- 購買演唱會門票的合同模板
- 燃燒爆炸理論及應(yīng)用 課件 第1-3章 緒論、燃燒及其災(zāi)害、物質(zhì)的燃燒
- 事業(yè)單位網(wǎng)絡(luò)安全知識培訓(xùn)
- 2024年山東省第三屆中小學(xué)生海洋知識競賽試題及答案(初中組)
- 2024年山東省春季高考技能考試汽車專業(yè)試題庫-上(單選題匯總)
- 《活著》讀書分享課件
評論
0/150
提交評論