在STM32中使用printf发送字符串到串口

2018-06-10 12:15:40来源: eefocus 关键字:STM32  printf  发送字符串  串口

问题:在使用STM32调试时,经常使用串口发送信息,为了方便调试与串口发送信息,用printf()函数实现通过串口打印信息。


方法一:


1.添加包含printf()函数的头文件:#include “stdio.h” 

2.重写 stdio.h 头文件中的 int fputc(int ch, FILE *f) 函数


int fputc(int ch, FILE *f)

{

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

    //等待先前的字符发送完成

    USART_SendData(USART1, (uint8_t) ch);

    //发送字符

    return ch;

}

//示例函数中使用了USART1来发送消息

//实际情况可以根据硬件板来决定使用哪个串口


注意:使用while循环先等待先前的字符发送完成,避免造成字符串首字符发送丢失的问题。 

3.将该函数” int fputc(int ch, FILE *f) “放在main()函数能够调用到的文件中,KEIL->Options for Target’xxx’->Target->Code Generation,勾选Use MicroLIB


方法二:


//加入以下代码,支持printf函数,而不需要选择use MicroLIB    

#if USART_DEBUG

#pragma import(__use_no_semihosting)             

//标准库需要的支持函数                 

struct __FILE 

{

    int handle; 


};


FILE __stdout;       

//定义_sys_exit()以避免使用半主机模式    

_sys_exit(int x) 

{

    x = x; 

}

//重定义fputc函数 

int fputc(int ch, FILE *f)

{      

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

    {}

    USART_SendData(USART1,(uint8_t)ch); 

    return ch;

}

#endif 


使用以上任一方法,均可实现printf()函数打印字符串重定义到USART1。


关键字:STM32  printf  发送字符串  串口

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018061039727.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32模拟串口输出偶有乱码
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

网友正在学习IC视频

推荐阅读
全部
STM32
printf
发送字符串
串口

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved