首先來說下什麼是埠復用。
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 引...