STM32埠復用和重對映

2021-08-20 08:23:23 字數 2444 閱讀 8323

stm32的引腳可設定為可設定為:普通io功能、復用功能、重對映功能。不過普通io功能、復用功能用得比較多。

復用

在tsm32裡面,大部分的引腳都是有gpio復用功能,也就是說,乙個 gpio如果可以復用為內建外設的功能引腳,那麼當這個 gpio 作為內建外設使用的時候,就叫做復用。例如圖下方框:串列埠 1 的引腳對應的 io 為 pa9,pa10。 can匯流排的的引腳對應的 io 為 pa11,pa12。等等根據原理圖或手冊可看

關於復用埠初始化有幾個步驟

舉例子最容易懂

當pa9,pa10 引腳需要作為串列埠 1 的 tx,rx 引腳使用的時候,那就是埠復用。

詳細步驟為:

1)首先 gpio 埠時鐘使能。因為要使用到埠復用,當然要使能該埠的時鐘了。

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable);
2)復用的外設時鐘使能比如你要將埠 pa9,pa10 復用為串列埠,所以要使能串列埠時鐘。

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
3埠模式配置。在 io 復用位內建外設功能引腳的時候,必須設定 gpio 埠的模式,至於在復用功能下 gpio 的模式是怎麼對應的,這個可以檢視手冊《stm32 中文參考手冊 v10》(根據引腳配置不同的)

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

重對映

為了使不同器件封裝的外設 io 功能數量達到最優,可以把一些復用功能重新對映到其他一些引腳上,目的為了讓設計工程師可以更好地安排引腳的走向和功能,在 stm32 中引入了外設引腳重對映的概念,即乙個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。簡單的講就是把管腳的外設功能對映到另乙個管腳去使用,但是不是可以隨便對映的,根據手冊是否可以對映。

下面我將以正點原子的例子來講解:

部分重對映就是 pb10,pb11,pb12 重對映到 pc10,pc11,pc12 上。而 pb13 和 pb14 和沒有重對映情況是一樣的,都是 usart3_cts 和 usart3_rts 對應管腳。完全重對映就是將這兩個腳重新對映到 pd11 和 pd12 上去。。

上圖是擷取的中文參考手冊中的重對映表,從表中可以看出,預設情況下,串列埠 1 復用的時候的引腳位 pa9,pa10,同時我們可以將 tx 和 rx 重新對映到管腳 pb6 和 pb7 上面去。所以重對映我們同樣要使能復用功能的時候講解的 2 個時鐘外,還要使能afio 功能時鐘,然後要呼叫重對映函式。

詳細步驟為:

1)使能 gpiob 時鐘:

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);
2)使能串列埠 1 時鐘:

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);//因為用到了復用功能,則要使能時鐘
3)使能 afio 時鐘:

rcc_apb2periphclockcmd(rcc_apb2periph_afio, enable);
4)開啟重對映:

gpio_pinremapconfig(gpio_remap_usart1, enable);
5)

埠模式配置:

根據相應的功能進行io口的配置。這樣就將串列埠的 tx 和 rx 重對映到管腳 pb6 和 pb7 上面了。

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 引...

STM32之埠復用與重對映

首先來說下什麼是埠復用。stm32有很多的內建外設,這些外設的外部引腳都是與gpio復用的。也就是說,乙個gpio如果可以復用為內建外設的功能引腳,那麼當這個gpio作為內建外設使用的時候,就叫做復用。其實說白了,簡單易懂的說,就是某些普通的外設引腳也可以用來其它功能。比如說那我使用的正點原子哥的板...