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的配置就需要翻查参考手册了。

  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值