剛開始學習一款單片機的時候一般都是從操作IO口開始的,所以我也一樣,先是弄個流水燈。
剛開始我對STM32的認識不夠,以為是跟51單片機類似,可以直接操作埠,可是LED燈卻沒反應,於是乎,仔細查看資料發現,原來對於ARM,不管你要操作哪個IO口,都要先配置IO口。
不過對於普通的IO口的應用,配置會比較簡單,主要就以下幾個步驟:
1.打開相應IO口的時鐘;
2.打開IO口相應引腳位;
3.配置IO口的模式;
4.初始化IO埠。
對於STM32的IO口可以根據需要由軟體配置成8種模式:
(1)GPIO_Mode_AIN 模擬輸入
(2)GPIO_Mode_IN_FLOATING 浮空輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_IPU 上拉輸入
(5)GPIO_Mode_Out_OD 開漏輸出
(6)GPIO_Mode_Out_PP 推輓輸出
(7)GPIO_Mode_AF_OD 復用開漏輸出
(8)GPIO_Mode_AF_PP 復用推輓輸出
最大可以輸出8mA,灌入20mA,但要保證所有進入晶片VDD的不能超過150mA,同樣所有從VSS流出的電流也不能超過150mA。
晶片手冊這些參數都有的啊,一般配置IO的話有三個選項10MA,20MA,50MA,可以看情況配置,往大的配置也沒有關係,實際使用是多少就是多少
1,浮空輸入的時候,你想輸入大電流都難。浮空輸入,內阻比較大,你得很高的電壓,這樣直接超過STM32的上限了。
2,推完輸出,數據手冊上最大電流是25ma,總電流也是25ma。實測可以上到60多mA。不過建議單個IO最好不要超過10mA。
用的最多的也就是推輓輸出、開漏輸出、上拉輸入。在這裡做一個總結:
可以輸出高,低電平,連接數字器件; 推挽結構一般是指兩個三極體分別受兩互補信號的控制,總是在一個三極體導通的時候另一個截止。高低電平由IC的電源決定。
推挽電路是兩個參數相同的三極體或MOSFET,以推挽方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次只有一個導通,所以導通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。推拉式輸出級既提高電路的負載能力,又提高開關速度。
輸出端相當於三極體的集電極,要得到高電平狀態需要上拉電阻才行。適合於做電流型的驅動,其吸收電流的能力相對強(一般20mA以內)。開漏形式的電路有以下幾個特點:
1、利用外部電路的驅動能力,減少IC內部的驅動。當IC內部MOSFET導通時,驅動電流是從外部的VCC流經上拉電阻、MOSFET到GND。IC內部僅需很小的柵極驅動電流。
2、一般來說,開漏是用來連接不同電平的器件,匹配電平用的,因為開漏引腳不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優點是通過改變上拉電源的電壓,便可以改變傳輸電平。比如加上上拉電阻就可以提供TTL/CMOS電平輸出等。(上拉電阻的阻值決定了邏輯電平轉換的速度。阻值越大,速度越低功耗越小,所以負載電阻的選擇要兼顧功耗和速度。)
3、開漏輸出提供了靈活的輸出方式,但是也有其弱點,就是帶來上升沿的延時。因為上升沿是通過外接上拉無源電阻對負載充電,所以當電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。
4、可以將多個開漏輸出連接到一條線上。通過一隻上拉電阻,在不增加任何器件的情況下,形成「與邏輯」關係,即「線與」。可以簡單的理解為:在所有引腳連在一起時,外接一上拉電阻,如果有一個引腳輸出為邏輯0,相當於接地,與之並聯的迴路「相當於被一根導線短路」,所以外電路邏輯電平便為0,只有都為高電平時,與的結果才為邏輯1。
顧名思義就是浮在空中,上面用繩子一拉就上去了,下面用繩子一拉就沉下去了。
這幾個概念很好理解,從字面便能輕易讀懂。
. 可以理解為GPIO口被用作第二功能時的配置情況(即並非作為通用IO口使用)。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴