重映射
STM32
中對于一些端口的外設已經被其他引腳所使用,這是就需要用端口重映射來解決
了,很方便。
以
USART1
為例
重映射的步驟為:
打開重映射時鐘和
USART
重映射后的
I/O
口引腳時鐘,
RCC_APB2PeriphClockCmd
(
RCC_APB2Periph_GPIOB
|
RCC_APB2Periph_AFIO
,
ENABLE
)
;
I/O
口重映射開啟。
GPIO_PinRemapConfig
(
GPIO_Remap_USART1
,
ENABLE
)
;
配制重映射引腳,
這里只需配置重映射后的
I/O
,原來的不需要去配置。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_A
F_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init
(
GPIOB
,
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_I
N_FLOATING;GPIO_Init
(
GPIOB
,
12345678
這樣就可以了,很簡單。
地址映射
對于地址映射是在查重映射時發現的,感覺
ST
的庫很機智,就記錄下來。
首先看一下
M3
存儲器映射
我們的操作就在這
512MB
的地址進行。
在
LED
燈的程序中,存在宏定義:
#defineGPIOC_BASE
(
APB2PERIPH_BASE+0x1000
)
#defineAPB2PERIPH_BASE
(
PERIPH_BASE+0x10000
)
#definePERIPH_BASE
(
(
uint32_t
)
0x40000000
)
123