STM32中printf重定向到串口

来源:互联网 发布:保险网络大学报名 编辑:程序博客网 时间:2024/04/27 16:55

 STM32中printf重定向到串口 

转载自:http://blog.csdn.net/wdscq1234/article/details/7944036

        学习STM32过程中,经常打交道的莫过于串口,你可以将任何信息,当然重要的是调试信息打印到串口中输出,总是用一个字节发送函数或者字符串发送函数

总是有些不放便,之前编程中熟悉的莫过于printf了,下面就给出了用printf打印到串口的方案,当然方案不止一个,仅供参考。 

1、 添加printf的头文件   #include <stdio.h> 

2、重写int fputc(int ch, FILE *f)函数 

int fputc(int ch, FILE *f);

函数

int fputc(int ch, FILE *f)
{

USART_SendData(USART1, (uint8_t) ch);

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

return ch;
}

3、修改一下选中Use MicroLIB   Target——Code Generation——选中Use MicroLIB 

这样就可以像以前那样使用printf了。


重定向C库函数printf到USART1
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
return (ch);
}
重定向C库函数scanf到USART1
int fgetc(FILE *f)
{
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(USART1);
}


1 0