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作為內建外設使用的時候,就叫做復用。其實說白了,簡單易懂的說,就是某些普通的外設引腳也可以用來其它功能。比如說那我使用的正點原子哥的板...