stm32的GPIO學習筆記.doc_第1頁
stm32的GPIO學習筆記.doc_第2頁
stm32的GPIO學習筆記.doc_第3頁
stm32的GPIO學習筆記.doc_第4頁
stm32的GPIO學習筆記.doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

I/O口工作模式:1.高阻輸入 輸入模式的結構比較簡單,就是一個帶有施密特觸發(fā)輸入(Schmitt-triggered input)的三態(tài)緩沖器(U1),并具有很高的阻抗。施密特觸發(fā)輸入的作用是能將緩慢變化的或者是畸變的輸入脈沖信號整形成比較理想的矩形脈沖信號。 執(zhí)行 GPIO管腳讀操作時,在讀脈沖(Read Pulse)的作用下會把管腳(Pin)的當前電平狀態(tài)讀到內部總線上(Internal Bus)。2.推挽輸出 推挽電路是兩個參數(shù)相同的三極管或MOSFET,以推挽方式存在于電路中,各負責正負半周的波形放大任務,電路工作時,兩只對稱的功率開關管每次只有一個導通,所以導通損耗小、效率高. 在推挽輸出模式下,GPIO還具有回讀功能,實現(xiàn)回讀功能的是一個簡單的三態(tài)門 U2。注意:執(zhí)行回讀功能時,讀到的是管腳的輸出鎖存狀態(tài),而不是外部管腳 Pin的狀態(tài)。3.開漏輸出 開漏是用來連接不同電平的器件,匹配電平用的,因為開漏引腳不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優(yōu)點是通過改變上拉電源的電壓,便可以改變傳輸電平,比如加上上拉電阻就可以提供TTL/CMOS電平輸出等。 開漏輸出和推挽輸出相比結構基本相同,但只有下拉晶體管 T1而沒有上拉晶體管。同樣,T1實際上也是多組可編程選擇的晶體管。開漏輸出的實際作用就是一個開關,輸出“1”時斷開、輸出“0”時連接到 GND(有一定內阻) 開漏輸出和推挽輸出相比結構基本相同,但只有下拉晶體管 T1而沒有上拉晶體管。同樣,T1實際上也是多組可編程選擇的晶體管。開漏輸出的實際作用就是一個開關,輸出“1”時斷開、輸出“0”時連接到 GND(有一定內阻).4.鉗位二級管其作用是防止從外部管腳 Pin輸入的電壓過高或者過低。提高輸出電壓一種簡單的做法:是先在 GPIO管腳上串聯(lián)一只二極管(如 1N4148),然后再接上拉電阻。/STM32的GPIO管腳深入分析: 概述:STM23的每個GPIO引腳都可以由軟件配置成輸出(推挽或開漏),輸入(帶或不帶上拉或下拉)或復用的外設功能端口。多數(shù)GPIO引腳與數(shù)字或模擬的復用外設共用;除了具有模擬輸入(ADC)功能的管腳之外,其他的GPIO引腳都有大電流通過能力。tip: 每個IO口可以自由編程,單IO口寄存器必須要按32位bit被訪問。 STM32的每個IO端口都有7個寄存器來控制一.具體如下8種模式:1)輸入浮空(這個輸入模式,輸入電平必須由外部電路確定,要根據(jù)具體電路,加外部上拉電阻或下拉電阻,可以做按鍵識別)2)輸入上拉(打開IO內部上拉電阻)3)輸入下拉(打開IO內部下拉電阻)4)模擬輸入(應用ADC模擬輸入)5)開漏輸出(輸出端相當于三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行. 適合于做電流型的驅動,其吸收電流的能力相對強(一般20ma以內).能驅動大電流和大電壓,LED就使用這種模式。)6)推挽式輸出(可以輸出高,低電平,連接數(shù)字器件。推挽式輸出輸出電阻小,帶負載能力強)7)推挽式復用功能(復用是指該引腳打開remap功能)8)開漏復用功能(復用是指該引腳打開remap功能)tip:上拉輸入模式:區(qū)別在于沒有輸入信號的時候默認輸入高電平(因為有弱上拉)。下拉輸入模式:區(qū)別在于沒有輸入信號的時候默認輸入低電平(因為有弱下拉)。( 上拉就是使IO口接上拉電阻到VCC了,跟51一樣,下拉就是使IO口接下拉電阻到GND了, 浮空就是即不接上拉,也不接下拉,這樣的話IO默認輸入電平不確定 )浮空輸入模式:顧名思義也就是輸入什么信號才是什么信號,對于浮空輸入要保證有明確的輸入信號。庫函數(shù):GPIO_Mode_AIN 模擬輸入 GPIO_Mode_IN_FLOATING 浮空輸入 GPIO_Mode_IPD 下拉輸入 GPIO_Mode_IPU 上拉輸入 GPIO_Mode_Out_OD 開漏輸出 GPIO_Mode_Out_PP 推挽輸出 GPIO_Mode_AF_OD 復用開漏輸出 GPIO_Mode_AF_PP 復用推挽輸出二.TM32的每個IO端口都有7個寄存器來控制,具體七個寄存器如下:CRL 端口配置低寄存器 CRH 端口配置高寄存器IDR 端口輸入數(shù)據(jù)寄存器ODR 端口輸出數(shù)據(jù)寄存器BSRR 端口位設置/復位寄存器BRR 端口位復位寄存器LCKR 端口配置鎖定寄存器EVCR 事件控制寄存器MAPR 復用重映射和調試I/O配置寄存器EXTICR 外部中斷線路0-15配置寄存器tip:*CRL(端口配置低寄存器):復位值為0X4444 4444(4化成二進制為0100),從上圖可以看到,復位值其實就是配置端口為浮空輸入模式得出:STM32的CRL控制著每個IO端口(AG)的低8位的模式。每個IO端口的位占用CRL的4個位,高兩位為CNF,低兩位為MODE。 CRL控制的是低8位輸出口,而CRH控制的是高8位輸出口在輸入模式(MODE1:0=00):00:模擬輸入模式01:浮空輸入模式(復位后的狀態(tài))10:上拉/下拉輸入模式11:保留在輸出模式(MODE1:000):00:通用推挽輸出模式01:通用開漏輸出模式10:復用功能推挽輸出模式11:復用功能開漏輸出模式MODEy1:0:端口x的模式位:00:輸入模式(復位后的狀態(tài))01:輸出模式,最大速度10MHz10:輸出模式,最大速度2MHz11:輸出模式,最大速度50MHz*端口輸入數(shù)據(jù)寄存器(GPIOx_IDR):tip: IDR是一個GPIOx_IDR的端口輸入數(shù)據(jù)寄存器的簡稱(ODR是輸入數(shù)據(jù)寄存器的簡稱),要想知道某個IO口的狀態(tài),就要讀這個寄存器,再從讀出的寄存器值分析出某個管腳位的狀態(tài),就可以知道這個管腳的狀態(tài)了;IDR寄存器只用了低16位。該寄存器為只讀寄存器,并且 只能以16位的形式讀出。端口輸出數(shù)據(jù)寄存器(GPIOx_ODR): ODR是一個端口輸出數(shù)據(jù)寄存器,其作用就是控制端口的輸出,對ODR對應寄存器位置1即對應的GPIO管腳就會輸出高電平。該寄存器也只 用了低16位,并且該寄存器可讀可寫,如果讀的話,從該寄存器讀出來的數(shù)據(jù)都是0,所以讀是沒有意義的;只有寫是有效的??偨Y:GPIOx_IDR是端口的輸入數(shù)據(jù)寄存器,GPIOx_ODR是端口的輸出寄存器,我們配置引腳的輸入輸出模式是通過GPIOx_CRL和GPIOx_CRH兩 個寄存器來配置的,但是每個端口的16個引腳它們有的可能是輸出模式,有的是輸入模式,甚至一會輸出一會輸入,而GPIOx_IDR和GPIOx_ODR兩個寄存器是以字模式(讀一次就是訪問2個字節(jié),一個字等于2個字節(jié))訪問而不能以bit模式(bit模式表示一次訪問一個bit位,一個字節(jié)等于8個bit,一個字等于16個bit)訪問,GPIOx_IDR只能讀,而GPIOx_ODR可以讀寫。三.總結一下STM32的IO控制寄存器的作用:1)STM32的CRL和CRH寄存器主要是用來IO管腳的方向和速率以及何種驅動模式2)STM32的ODR寄存器是用來控制IO口的輸出高電平還是低電平3)STM32的IDR寄存器主要是用來存儲IO口當前的輸入狀態(tài)(高低電平)的。4)STM32的BSRR寄存器主要是用來直接對IO端某一位直接進行設置和清除操作,通過這個寄存器可以方便的直接修改一個引腳的高低電平5)STM32的BRR寄存器用來清除某端口的某一位位0,如果該寄存器某位為0,那么它所對應的那個引腳位不產(chǎn)生影響;如果該寄存器某位 為1 ,則清除對應的引腳位。6)STM32的LCKR用來鎖定端口的配置,當對相應的端口位執(zhí)行了LOCK序列后,在下次系統(tǒng)復位之前將不能再更改端口位的配置。/GPIO的輸出模式下幾種速度的區(qū)別: 2MHz、10MHz、50MHz;這個又可以理解為輸出驅動電路的不同響應速度(芯片內部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電路,用戶可以根據(jù)自己的需要選擇合適的驅動電路,通過選擇速度來選擇不同的輸出驅動電路模塊,達到最佳的噪聲控制和降低功耗的目的)。、/在STM32中如何配置片內外設使用的IO端口:首先,一個外設在使用前,必須先配置和激活啟動該外設的時鐘,比如GPIO端口B,那么就要激活GPIOB的時鐘,比如GPIOA,那么使用PA2管腳前,必須要前激活GPIOA端口的時鐘,只有啟動時鐘后,這個外設才變得激活可用。到外設的輸入輸出功能基本有三種情況:1)管腳輸出:需要根據(jù)外圍電路的配置選擇對應的管腳為復用功能的推挽輸出或復用功能的開漏輸出。2)管腳輸入:則根據(jù)外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。3)ADC對應的管腳:配置管腳為模擬輸入。值得注意的是:這里如果把端口配置成復用輸出功能,則該引腳與它當前連的信號電路斷開,和復用功能信號電路連接,所以將管腳配置成復用輸出功能后,如果只激活了該引腳的GPIO端口的時鐘,而忘記把復用功能的時鐘激活,那么它的輸出將不確定,這樣會產(chǎn)生異常的現(xiàn)。/APB2ENR寄存器是APB2總線上的外設時鐘使能寄存器/端口位設置/清除寄存器(GPIOx_BSRR) (x=A.E):位31:16 這些位只能寫入并只能以字(16位)的形式操作。 0:對對應的ODRy位不產(chǎn)生影響 1:清除對應的ODRy位為0 注:如果同時設置了BSy和BRy的對應位,BSy位起作用。位15:0 這些位只能寫入并只能以字(16位)的形式操作。 0:對對應的ODRy位不產(chǎn)生影響 1:設置對應的ODRy位為1/端口位清除寄存器(GPIOx_BRR) (x=A.E):位31:16 保留。 BRy: 清除端口x的位y (y = 015) (Port x Reset bit y) 位15:0 這些位只能寫入并只能以字(16位)的形式操作。 0:對對應的ODRy位不產(chǎn)生影響1:清除對應的ODRy位為0/端口配置鎖定寄存器(GPIOx_LCKR) (x=A.E):當執(zhí)行正確的寫序列設置了位16(LCKK)時,該寄存器用來鎖定端口位的配置。位15:0用于鎖定GPIO端口的配置。在規(guī)定的寫入操作期間,不能改變LCKP15:0。當對相應的端口位執(zhí)行了LOCK序列后,在下次系統(tǒng)復位之前將不能再更改端口位的配置。 每個鎖定位鎖定控制寄存器(CRL, CRH)中相應的4個位。位31:17 保留。 位16 LCKK:鎖鍵 (Lock key) 該位可隨時讀出,它只可通過鎖鍵寫入序列修改。 0:端口配置鎖鍵位激活 1:端口配置鎖鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論