STM32F429和F103埠重對映

2021-08-20 15:48:56 字數 4039 閱讀 9714

它自己預設每個管腳有自己的復用功能,但是這個管腳你用了,但你想要用它的其他功能,你就可以將這個功能重對映到其他管腳。使用復用功能是要保持乙個功能使能,其他功能非使能狀態
重對映指的是內部功能轉移到別的引腳上去,晶元內部已經固定了只能對映到固定的地方。若使用tim3重對映到其他引腳上,則先要配置tim3重對映到該引腳,然後在按該引腳的復用功能配置f103重對映例項:
1.開啟重對映時鐘和

usart

重對映後的

i/o口引腳時鐘

,rcc_apb2periphclockcmd(rcc_apb2periph_gpiob

|rcc_apb2periph_afio,enable);

//使能對應

io口的時鐘,因為是復用功能所以還要使能

afio

時鐘2.i/o口重對映開啟

.gpio_pinremapconfig(gpio_remap_usart1,enable);

3.配製重對映後的引腳: 這裡只需配置重對映後的

i/o(pb6,pb7),原來的不需要去配置

(pa9,

pa10

).gpio_initstructure.gpio_pin = gpio_pin_6;

gpio_initstructure.gpio_mode = gpio_mode_af_pp;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_init(gpiob, &gpio_initstructure);

gpio_initstructure.gpio_pin = gpio_pin_7;

gpio_initstructure.gpio_mode = gpio_mode_in_floating;

gpio_init(gpiob, &gpio_initstructure);

f429重對映例項:

usart2

的tx,rx

為例

usart2

的tx,rx

對應的pin

腳分別為:

pd5,pd6

1) 首先

,我們要使用

io復用功能外設,必須先開啟對應的

io時鐘和復用功能外設時鐘。

[cpp]view plain

copy

/*使能gpiod時鐘*/

rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiod,enable);  

usart2

在apb1

匯流排上

[cpp]view plain

copy

/*使能usart2時鐘*/

rcc_apb1periphclockcmd(rcc_apb1periph_usart2,enable);  

這裡需要說明一下,官方庫提供了五個開啟

gpio

和外設時鐘的函式分別為:

[cpp]view plain

copy

void

rcc_ahb1periphclockcmd(uint32_t rcc_ahb1periph,functionalstate newstate);  

void

rcc_ahb2periphclockcmd(uint32_trcc_ahb2periph, functionalstate newstate);  

void

rcc_ahb3periphclockcmd(uint32_trcc_ahb3periph, functionalstate newstate);  

void

rcc_apb1periphclockcmd(uint32_trcc_apb1periph, functionalstate newstate);  

void

rcc_apb2periphclockcmd(uint32_trcc_apb2periph, functionalstate newstate);  

這五個函式分別用來開啟相應的匯流排下

gpio

和外設時鐘。比如我們的串列埠

2是掛載在

apb1

匯流排之下,所以我們呼叫對應的

apb1

匯流排下外設時鐘使能函式

rcc_apb1periphclockcmd

來使能串列埠

2時鐘。對於其他外設我們呼叫相應的函式即可。

2) 其次,我們在

gipox_moder

暫存器中將所需

io(對於串列埠2是

pd5,pd6

)配置為復用功能(

adc和

dac設定為模擬通道)。

3)再次

,我們還需要對

io口的其他引數,例如型別,上拉

/下拉以及輸出速度。

上面兩步,在我們庫函式中是通過

gpio_init

[cpp]view plain

copy

/*gpiod5與gpiod6初始化*/

gpio_initstructure.gpio_pin= gpio_pin_5 | gpio_pin_6;   

gpio_initstructure.gpio_mode= gpio_mode_af;//復用功能

gpio_initstructure.gpio_speed= gpio_speed_50mhz;//速度50mhz

gpio_initstructure.gpio_otype= gpio_otype_pp; //推挽復用輸出

gpio_initstructure.gpio_pupd= gpio_pupd_up; //上拉

gpio_init(gpiod,&gpio_initstructure);//初始化pd5,pd6

4)最後,我們配置

gpiox_afrl

或者gpiox_afrh

暫存器,將

io連線到所需的

afx。這些步驟對於我們使用庫函式來操作的話,是呼叫的

[cpp]view plain

copy

gpio_pinafconfig函式來實現的。具體操作**如下:  

/*pd5連線af7,復用為usart2_tx */

gpio_pinafconfig(gpiod,gpio_pinsource5,gpio_af_usart2);  

/* pd6連線af7,復用為usart2_rx*/

gpio_pinafconfig(gpiod,gpio_pinsource6,gpio_af_usart2);  

f4的重對映是開啟該引腳重對映功能,直接將功能重對映的引腳上

gpio_pinafconfig(gpiod,gpio_pinsource5,gpio_af_usart2),無重對映時鐘; 

f1的重對映需開啟重對映時鐘和使用gpio_pinpremapconfig()開啟改功能時鐘來使能該功能,然後然後再初始化

引腳為重對映功能,該引腳會自動鏈結上它的重對映功能。

STM32F429除錯記錄(一)

stm32f429的晶元有兩路can介面 四路串列埠 內部乙太網以及內部dsp處理器等硬體,硬體的豐富程度可見一斑,而且主頻達到180mhz,雖然比a8 a9架構的arm晶元還是差一大截,但是在工業控制上的應用還是比較多的。在程式編寫方面stm32f4系列不管在mdk還是庫函式都有挺大改動,剛著手除...

STM32F429 如何使用SDRAM

關於stm32f429 控制sdram fmc 擴充套件外部sdram 1 原理介紹 為什麼是fmc 不是 fsmc 區別在那裡!stm32f429使用fmc外設來管理擴充套件的儲存器,fmc是flexible memory controller的縮寫,譯為可變儲存控制器。它可以用於驅動包括sram...

STM32F429 如何使用NAND Flash

1 原理介紹 flash即是儲存晶元的一種,其結合了rom和ram的特點,既具備電可擦除程式設計的效能,又可以快速讀取資料,資料不會因斷電丟失。目前市面上flash主要有nor flash和nand flash。nor flash具有隨機訪問和隨位元組執行寫操作的能力,即可以訪問到儲存器內部的任意乙...