STM32之埠復用與重對映

2021-08-26 14:47:04 字數 2434 閱讀 1028

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

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_pin

remapconfig(gpio_remap_usart1, enable);

之後只需要再次初始化gpio埠即可。

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

STM32埠復用和重對映

stm32的引腳可設定為可設定為 普通io功能 復用功能 重對映功能。不過普通io功能 復用功能用得比較多。復用 在tsm32裡面,大部分的引腳都是有gpio復用功能,也就是說,乙個 gpio如果可以復用為內建外設的功能引腳,那麼當這個 gpio 作為內建外設使用的時候,就叫做復用。例如圖下方框 串...

STM32埠復用 埠重對映

埠復用功能 stm32有很多的內部外設,這些外設的外部引腳都是與gpio復用的。也就是說,乙個gpio如果可以復用為內部外設的功能引腳,那麼當這個gpio作為內部外設使用的時候,就叫做復用。譬如,mcu都有串列埠,stm32有好幾個串列埠。比如說stm32f103zet6有5個串列埠,我們可以查手冊...

STM32學習筆記 埠復用和重對映

乙個 gpio如果可以復用為內建外設的功能引腳,那麼當這個 gpio 作為內建外設使用的時候,就叫做復用。比如說 stm32f103rbt6 的串列埠 1 的引腳對應的 io 為 pa9,pa10.pa9,pa10 預設功能是 gpio,所以當pa9,pa10 引腳作為串列埠 1 的 tx,rx 引...