对于如何使用USART2或者USART3串口的printf()函数,查阅了网上的很多文章,感觉都很麻烦,于是就自己尝试修改原有串口的int fputc(int ch,FILE *p)函数,
原函数int fputc(int ch,FILE *p)
{
USART_SendData(USART31,(u8)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return ch;
}
使用的是USART1
修改后:int fputc(int ch,FILE *p)
{
USART_SendData(USART3,(u8)ch);
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);
return ch;
}
使用的是USART3,经测试输出正常。
USART3的配置函数:
void Usart3Config(u32 baud)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构体变量初始化
USART_InitTypeDef USART_InitSrtucture;
NVIC_InitTypeDef NVIC_InitStructure; //NVIC配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);