第八章 埠復用和重對映

2021-08-14 00:04:51 字數 2961 閱讀 7035

(部分重對映:部分管腳重新對映到其他管腳;完全重對映:所有管腳都重新對映到其他管腳;)

1 埠復用功能 

所以,我們在使用復用功能的是時候,最少要使能2 個時鐘: 

1) gpio時鐘使能 

2) 復用的外設時鐘使能 

同時要初始化gpio以及復用外設功能

2 埠重對映 

如果不需要重對映,只是使能復用就不用使能afio功能時鐘。

首先來說下什麼是埠復用。

stm32有很多的內建外設,這些外設的外部引腳都是與gpio復用的。也就是說,乙個gpio如果可以復用為內建外設的功能引腳,那麼當這個gpio作為內建外設使用的時候,就叫做復用。

其實說白了,簡單易懂的說,就是某些普通的外設引腳也可以用來其它功能。比如說那我使用的正點原子哥的板子來說吧,串列埠1 的傳送接收引腳是pa9,pa10,當我們把pa9,pa10不用作普通的gpio口,而用做復用功能串列埠1的傳送接收引腳的時候,叫埠復用。

接下來說下埠復用的配置過程

首先,gpio埠時鐘使能。(這個不管用不用埠復用,要使用某個io口必須要對時鐘進行使能)

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable);
接下來就是你要使能復用外設時鐘。(這裡以串列埠1為例)

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
接下裡就是埠模式配置。 gpio_init()函式。

gpio_inittypedef gpio_initstructure;

gpio_initstructure.gpio_pin = gpio_pin_9;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_initstructure.gpio_mode = gpio_mode_af_pp;//復用推挽輸出

gpio_init(gpioa, &gpio_initstructure);//初始化gpioa.9

gpio_initstructure.gpio_pin = gpio_pin_10;//pa10

gpio_initstructure.gpio_mode = gpio_mode_in_floating;//浮空輸入

gpio_init(gpioa, &gpio_initstructure);//初始化gpioa.10

這個可以參考(這裡僅僅貼出了串列埠和定時器的埠配置模式)

以上就是埠復用的配置。

接下來說下什麼是重對映。

每個內建外設都有若干個輸入輸出引腳,一般這些引腳的輸出埠都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在stm32中引入了外設引腳重對映的概念,即乙個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。

為了使不同器件封裝的外設io功能數量達到最優,可以把一些復用功能重新對映到其他一些引腳上。stm32中有很多內建外設的輸入輸出引腳都具有重對映(remap)的功能。

打個比方說,串列埠1的tx,rx引腳是在pa9,和pa10埠,但是同時它有兩個對映埠pb6,pb7。開啟重對映,pb6和pb7同樣可以使用串列埠1。

詳情可參考下表關於串列埠1和串列埠2的重對映表。

此外,還有有乙個部分重對映,所謂部分重對映,顧名思義,就是有部分的埠進行了重對映。

比如time1(當做部分對映時,tim1_bkin為pa6引腳,而作為完全重對映是為pe15引腳而tim1_etr一直為pa12引腳)

接下來還是以串列埠1為例寫下配置過程。

首先,使能gpio時鐘(注意:重對映後的io);

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);
接下來是使能功能外設時鐘;

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
然後是使能afio時鐘:

rcc_apb2periphclockcmd(rcc_apb2periph_afio, enable);
這裡註明下為什麼要使能這個afio時鐘。

對暫存器afio_mapr,afio_exticrx和afio_evcr進行讀寫操作前,應當首先開啟afio時鐘。

afio_mapr:配置復用功能重對映 

afio_exticrx:配置外部中斷線對映 

afio_evcr: 配置eventout事件輸出

最後要開啟重對映:

gpio_pinremapconfig(gpio_remap_usart1, enable);
之後只需要再次初始化gpio埠即可。

以上也就是埠重對映的配置過程了。

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

埠復用和重對映

stm32除核心外還有很多內建外設,如串列埠,adc,與gpio復用 一些gpio可以復用為內建外設的功能引腳,如 pa9,pa10可復用為功能串列埠1的傳送接收引腳 晶元資料手冊 gpio埠復用時鐘使能 rcc apb2periphclockcmd rcc apb2periph gpio,enab...

埠復用和重對映

stm32 有很多的內建外設,這些外設的外部引腳都是與 gpio 復用的。也就是說,乙個 gpio 如果可以復用為內建外設的功能引腳,那麼當這個 gpio 作為內建外設使用的時候,就叫做復用。埠復用配置過程 以pa9,pa10 配置為串列埠1為例 gpio 埠時鐘使能。rcc apb2periphc...