野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8116|回复: 4

F103的USART printf函数重定向输出字符末尾有多余的字符

[复制链接]
发表于 2018-6-22 10:48:22 | 显示全部楼层 |阅读模式
在使用STM32F103的时候,用printf函数输出字符,末尾出现了多余字符,比如printf("aaaaaaaaaaa\n");结果打印出来后多了‘0口’两个字符,但是使用教程里面的void Usart_SendStr(USART_TypeDef* pUSARTx, uint8_t *str);就能正常显示,另外,这个字符是程序结束后才打印出来的,如果main函数末尾加上while(1);就不会打印出来。麻烦大神帮我解答一下,我的fputc函数为

  1. int fputc(int ch, FILE *f)
  2. {
  3.     //发送一个字节数据到串口
  4.     USART_SendData(DEBUG_USARTx, (uint8_t)ch);
  5.     //等待发送完毕
  6.     while(USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);    //等待发送完成

  7.     return ch;
  8. }

复制代码

TIM截图20180622104351.png
回复

使用道具 举报

发表于 2018-6-22 11:00:46 | 显示全部楼层
main函数不加while(1),程序会继续运行,指针乱飞,导致结果不可预测
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-22 11:46:49 | 显示全部楼层
flyleaf 发表于 2018-6-22 11:00
main函数不加while(1),程序会继续运行,指针乱飞,导致结果不可预测

谢谢。那我其他的一些程序也是要加while(1)吗?
回复 支持 反对

使用道具 举报

发表于 2018-6-22 13:39:56 | 显示全部楼层
香凝范儿 发表于 2018-6-22 11:46
谢谢。那我其他的一些程序也是要加while(1)吗?

都要的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-22 14:30:28 | 显示全部楼层

知道了!谢谢谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-26 01:49 , Processed in 0.035087 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表