微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32串口的部分映射与完全映射

STM32串口的部分映射与完全映射

时间:10-02 整理:3721RD 点击:
STM32F107共有五个串口,在项目中用了三个串口。其中串口3在默认的情况下,接收与发送端是在PB10与PB11端的。但是看到还有一个映射的串口3的接收与发送端。所以就试着用了一下映射的管脚。接收与发送端分别在PD8与PD9。
开部分映射时,发送端不能正常发出数据,接收端没有验证。也就是说部分映射时,发送端不被映射使用。所以得使用全映射。
映射的关键在下面这个函数:
GPIO_PinRemapConfig(GPIO_FullRemap_USART3  , ENABLE);
可以通过库的手册查看这个函数可以全能哪个映射功能。

STM32F107手册的第28页


我再补充一下,如果是管脚的默认功能的话,就不要开重映射这个功能了。管脚的默认功能只要按常规的来设置就可以了。这个只对像我那样的新手说的。大神就不用看了。如果我的话里有错误,那么就请大神指正。先谢谢啦。

在这里给大家提供一段串口初始化代码,这个代码在库手册里能找到的,仅是让初始学者了解一下
void USART3_init(void)
{  
        USART_InitStructure.USART_BaudRate = 115200;        //这里只对串口3的波特率进行设置
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

        /* Enable GPIO clock */
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  
    /* Enable the USART3 Pins Software Remapping */
//    GPIO_PinRemapConfig(GPIO_FullRemap_USART3  , ENABLE);//如果使用默认的功能,那就不用重映射了
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

        /* Configure USART Tx as alternate function push-pull */
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        /* Configure USART Rx as input floating */
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        /* USART configuration */
        USART_Init(USART3, &USART_InitStructure);         //初始化外设
            
        /* Enable USART */
        USART_Cmd(USART3, ENABLE);           //使能外设
//        USART_ITConfig(USART3,USART_IT_TXE,ENABLE);         //使能发送中断
       
//        USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); //使能接收中断
       
}

学习了

THANK YOU

还是不太理解

不要急,慢慢来,看多了,会有理解的时候的啦

映射是实现数据的共享吗?
我是初学者,请小编赐教.

好长时间没弄STM32了,忘了.应该是实现内部资源共享吧

小编尝试过在初始化中开启接收中断吗?

好长时间没弄单片机了,不好意思啊

应该是可以的,你可以试一下,我现在写了大半年上位机,变得生手了

回帖是美德!

可以在初始化配置的时候开启

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top