STM32串口printf()重定向问题
在用神州III号开发板做串口打印实验的时候,按以下步骤将printf()函数重定向为串口,可是发现超级终端怎么也不打印消息,非常郁闷,有谁能帮我解答一下这是为什么么?1、...
在用神州III号开发板做串口打印实验的时候,按以下步骤将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了。 展开
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了。 展开
3个回答
展开全部
/printf从定向
int fputc(int ch,FILE *p)
{
USART_SendData(USART2,(u8)ch);
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
return ch;
}
这个是我的重定向函数,串口跟你选择不一样,其他都一样的,所以我想这一部分你可能没有问题吧,想想有没有其他地方出现问题呢!
int fputc(int ch,FILE *p)
{
USART_SendData(USART2,(u8)ch);
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
return ch;
}
这个是我的重定向函数,串口跟你选择不一样,其他都一样的,所以我想这一部分你可能没有问题吧,想想有没有其他地方出现问题呢!
追问
给这个折磨的快不行了,所以后来就用标准模板了,在那里改可以实现,但是我就是搞不懂为嘛我自己重定向的函数就是没消息可以打印出来~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了这么写还要在使用前对相关串口初始化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询