STM32重映射(Remap)
在外设的初始化中默认为Default
在参考手册中
均有USART1的功能,但是若是想要用PB6与PB7作为USART1_TX与USART1_RX则需要用到重映射。
使用PA9 PA10只需要直接配置就可以。
重映射函数
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
重映射的引脚的复用功能是需要查询数据手册的。
这个函数使用的重点就是必须要在时钟使能之后进行配置。
stm32的引脚有两种用途:GPIO(general purpose io)和AFIO(alternate function io)
RCC_Configuration();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
这样便完成了重映射的配置,之后再对GPIO进行配置即可。就可以用PB7 PB6进行串口通信了。
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;//
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_SYSCLK_Div2);
FLASH_SetLatency(FLASH_Latency_2);
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource()!=0x08);
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA |
RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOB, ENABLE);
}
此处是对于时钟的配置。
复用功能
复用功能有两种:没有重映像、重映像(包括部分重映像、完全重映像)使用引脚用作AFIO功能,同样需要对其进行配置。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
便是打开了复用功能的时钟
至于使用复用功能的IO的配置就需要翻查参考手册了。