重映射
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