STM32串口的部分映射与完全映射
开部分映射时,发送端不能正常发出数据,接收端没有验证。也就是说部分映射时,发送端不被映射使用。所以得使用全映射。
映射的关键在下面这个函数:
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了,忘了.应该是实现内部资源共享吧
小编尝试过在初始化中开启接收中断吗?
好长时间没弄单片机了,不好意思啊
应该是可以的,你可以试一下,我现在写了大半年上位机,变得生手了
回帖是美德!
可以在初始化配置的时候开启
