说明:重定向就是将标准输出函数的出口指向串口,自定义一个int fputc(int c, FILE *stream)将形参的c变量通过串口发送即完成printf重定向。
方法:将重写的fputc函数加入到工程的任意一个C文件中
示例代码:
STM32使用HAL固件库:指向串口1
int fputc(int c, FILE *stream)
{
huart1.Instance->TDR = (c & (uint8_t)0xFFU);//将c赋给串口1的DR寄存器,即printf重定向到串口1。
while(!__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC)){};//等待数据发送完成
return c;
}
STM32F1使用标准库:指向串口1
//printf重定向
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch); //修改串口即可改变重定向
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}