GPIO的復用和重對映

2021-10-02 06:05:35 字數 2563 閱讀 2311

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

使用預設復用功能前必須對埠位配置暫存器程式設計。

● 對於復用的輸入功能,埠必須配置成 輸入 模式(浮空、上拉或下拉) 且輸入引腳必須由外部驅動

● 對於復用輸出功能,埠必須配置成復用功能輸出模式(推挽或開漏)。

● 對於雙向復用功能,埠位必須配置復用功能輸出模式(推挽或開漏)。這時,輸入驅動器被配置成浮空輸入模式。

如果把埠配置成復用輸出功能,則引腳和輸出暫存器斷開,並和片上外設的輸出訊號連線。

如果軟體把乙個gpio腳配置成復用輸出功能,但是外設沒有被啟用,它的輸出將不確定。

當i/o埠被配置為復用功能時:

● 在開漏或推挽式配置中,輸出緩衝器被開啟

● 內建外設的訊號驅動輸出緩衝器(復用功能輸出)

● 弱上拉和下拉電阻被禁止

● 在每個apb2時鐘週期,出現在i/o腳上的資料被取樣到輸入資料暫存器

● 開漏模式時,讀輸入資料暫存器時可得到i/o口狀態

● 在推挽模式時,讀輸出資料暫存器時可得到最後一次寫的值

1) gpio 埠時鐘使能。要使用到埠復用,當然要使能埠的時鐘了。

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

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
3) 埠模式配置。 在 io 復用位內建外設功能引腳的時候,必須設定 gpio 埠的模式;

從上**中可以看出,我們要配置全雙工或者半雙工同步模式的串列埠 ,那麼 tx 管腳需要配置為推挽復用輸出,而rx 管腳配置為浮空輸入或者帶上拉輸入。

//usart1_tx pa.9 復用推挽輸出

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);

//usart1_rx pa.10 浮空輸入

gpio_initstructure.gpio_pin = gpio_pin_10;//pa10

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

gpio_init(gpioa, &gpio_initstructure);

簡單的講就是把管腳的外設功能對映到另乙個管腳;

為了使不同器件封裝的外設 io 功能數量達到最優,可以把一些復用功能重新對映到其他一些引腳上。stm32 中有很多內建外設的輸入輸出引腳都具有重對映(remap)的功能。 我們知道每個內建外設都有若干個輸入輸出引腳,一般這些引腳的輸出埠都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在 stm32 中引入了外設引腳重對映的概念,即乙個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。

以stm32串列埠1為例

使用重對映功能是要使能三個時鐘:gpio時鐘、復用功能時鐘和重對映時鐘;

重對映我們同樣要使能復用功能的時候講解的 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);

有些外設例如usart3就具有部分重對映和完全重對映功能;

部分重對映:只對映部分引腳

完全重對映:所有引腳

使用 usart3 的部分重對映:

gpio_pinremapconfig(gpio_partialremap_usart3, enable);

使用 usart3 的完全重對映:

gpio_pinremapconfig(gpio_fullremap_usart3, enable);

埠復用和重對映

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

埠復用和重對映

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

STM32埠復用和重對映

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