如何理解STM32單片機(jī)引腳的復(fù)用功能?
在PLC的編程調(diào)試中,首先是要對系統(tǒng)的輸入/輸出(IO)進(jìn)行配置,也就是通常說的硬件組態(tài)。有了正確的IO分配,才能在編程的時(shí)候正確的讀取信號的輸入及控制信號的輸出。因此,IO配置是PLC調(diào)試最基礎(chǔ)也是最重要的工作。從這個(gè)方面來說,單片機(jī)的調(diào)試與PLC的調(diào)試有著異曲同工之妙。
對于單片機(jī)而言,GPIO引腳的配置是很基礎(chǔ)也是很重要的。錯(cuò)誤的引腳配置非但不能實(shí)現(xiàn)想要的功能,而且出錯(cuò)時(shí)往往不容易查找,耽誤調(diào)試的時(shí)間。這就需要編程調(diào)試人員對GPIO引腳的配置有很好的理解。今天這篇文章,我們就來談?wù)凷TM32Fxx系列單片機(jī)引腳的復(fù)用功能(Alternate Function)。

STM32Fxx系列單片機(jī)的GPIO引腳可以配置為浮空輸入(Input Floating)、上拉輸入(Input Pull-up)、下拉輸入(Input Pull-down)、模擬量(Analog)、開漏輸出(Output Open-drain)、推挽輸出(Output Push-pull)、復(fù)用開漏(Alternate function open-drain)輸出和復(fù)用推挽(Alternate function push-pull)輸出等八種模式。
先來介紹下開漏輸出和推挽輸出的區(qū)別:
STM32Fxx系列單片機(jī)的輸出電路有兩個(gè)MOS管:P-MOS和N-MOS。
在開漏輸出模式下,P-MOS管不工作,只有N-MOS管起作用。若輸出數(shù)據(jù)寄存器的值為0,則N-MOS導(dǎo)通,IO口輸出低電平;若輸出數(shù)據(jù)寄存器的值為1,則N-MOS截止;由于P-MOS不工作,此時(shí)IO口既不是高電平,也不是低電平,這種狀態(tài)被稱為高阻態(tài)。
在推挽輸出模式下,若輸出數(shù)據(jù)寄存器的值為0,則N-MOS導(dǎo)通,P-MOS截止,IO口輸出低電平;若輸出數(shù)據(jù)寄存器的值為1,則N-MOS截止,P-MOS導(dǎo)通,IO口輸出高電平;
我們知道STM32Fxx單片機(jī)還有復(fù)用開漏輸出和復(fù)用推挽輸出,它們和上面講到的(普通)開漏輸出和(普通)推挽輸出有什么區(qū)別呢?
這就涉及到針腳的復(fù)用功能。
我們知道,STM32Fxx內(nèi)部集成了很多的外設(shè)控制器,比如USART、SPI、bxCAN等等,這些外設(shè)控制器,也需要通過引腳與外設(shè)連接。復(fù)用功能是相對于單片機(jī)的引腳而言的。所謂“復(fù)用功能”,是指單片機(jī)的引腳既可以做普通GPIO使用,也可以作為內(nèi)部外設(shè)控制器的引腳來使用。
比如我們來看看STM32F103xx單片機(jī)的PA5引腳,如下圖:

首先,PA5可以做為普通GPIO來使用;其次,如果作為外設(shè)的引腳,它可以作為SPI1的時(shí)鐘(SPI1_SCK)、DAC的輸出通道1(DAC_OUT1)或者ADC的輸入通道5(ADC12_IN5)。
PA5支持的三種外設(shè)(SPI1、DAC、ADC)在同一時(shí)刻只能選擇一種,選擇的方法是開啟相應(yīng)外設(shè)的時(shí)鐘,并使其它外設(shè)的時(shí)鐘保持關(guān)閉狀態(tài)。如果PA5被配置為復(fù)用功能,但是沒有開啟它支持的任何外設(shè)的時(shí)鐘,它的輸出是不確定的。
復(fù)用推挽輸出和(普通)推挽輸出在輸出的時(shí)候均使用兩個(gè)MOS管(P-MOS和-MOS),其輸出電路是相同的。區(qū)別在于控制輸出的信號來源:(普通)推挽輸出控制MOS管的信號來自輸出數(shù)據(jù)寄存器,而復(fù)用推挽輸出的控制信號來自單片機(jī)的內(nèi)置外設(shè)控制器(比如SPI1)。
復(fù)用開漏輸出和(普通)開漏輸出的道理是一樣的。
下面這張圖,是普通GPIO輸出的引腳配置圖,可以看到其輸出信號來自輸出數(shù)據(jù)寄存器(Output data register):

下面這張圖,是選擇復(fù)用功能后的引腳配置圖,可以看到其輸出信號來自芯片內(nèi)置的外設(shè)控制器:

注:雖然復(fù)用模式的控制信號來自內(nèi)置外設(shè)控制器,但是單片機(jī)(CPU)依然可以讀取相應(yīng)的數(shù)據(jù)。在復(fù)用推挽輸出模式下,單片機(jī)可以通過讀取輸出數(shù)據(jù)寄存器(Output Data Register)的數(shù)據(jù)來獲取上次輸出的值;在復(fù)用開漏輸出的模式下,單片機(jī)可以通過讀取輸入數(shù)據(jù)寄存器(Input Data Register)的值來獲取引腳的狀態(tài)。
好了,關(guān)于STM32Fxx系列單片機(jī)引腳的復(fù)用功能就先聊到這里。關(guān)于引腳的配置還有一個(gè)重定位(Remap)的功能,我們以后再聊。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
