查看原文
其他

关于printf和scanf在开发STM32中的配置和应用

strongerHuang strongerHuang 2021-01-31

Ⅰ、写在前面

在我们学习C语言的时候都应该知道printf和scanf这个函数,但是你们在开发中经常使用这个函数吗?

 

在我们购买开发板配套例程以及在网上找的例程中或许会见到使用printf函数的地方,就有许多人问,这个printf和scanf是如何配置才能使用的?

 

printf和scanf串口打印功能对于学习开发的朋友是一种很好的工具,在没有显示屏或更多表现你程序运行结果的时候,用它打印信息就能很好地解决这个问题。在实际项目中,用于打印某段程序运行状态,也能帮你快速判断程序的正确性。

 

Ⅱ、printf和scanf的配置

printf和scanf都知道他们是“标准函数接口”,源代码的实现过程就不用我们自己写,只需要调用就行了。

 

printf和scanf在软件中要实现其功能,就需要对软件及工程进行配置,我们下面讲述一下常规的配置。

 

配置分使用微库不使用微库两种方法,不使用微库就是需要在代码中多添加一段代码,由于使用“标准函数接口”这种方式与编译工具关系很紧密,在不同 编译器上实现的方式存在不同(意思就是通用性不是很强),所以不建议使用这种方法。因此,我们讲述使用微库配置的方法。

 

1.使用微库

我们讲述MDK-ARM 和 EWARM下的配置。

 

MDK-ARM的使用微库:

Project -> Options for Target -> Target 勾选上“Use Micro LIB”,如下图:


 

EWARM的使用微库:

Project -> Options -> General Options -> Library Configuration 选中“Full”,如下图:


 

2.串口重定义

由于我们使用的是USART串口进行打印数据,则需要使用串口重定义。其实很简单,就是要在源代码中重定义两个函数:int fputc(int ch, FILE *f) 和 int fgetc(FILE *f)

 

在STM32工程中:


 

Ⅲ、printf和scanf的使用

printf和scanf的功能这里不再描述,在你工程运用中会逐渐明白他的用途,我们这里提供例程代码并讲述一下他们的简单使用方法。

 

我们在实际应用中,常用的应该是printf这个函数,而scanf这个函数比较少见,但也是有些地方可以使用的,比如要在某个地方传递参数,可以通过scanf输入参数,以便调试。

 

在STM32工程代码中简单的应用:

通过scanf输入一个字符,通过pringf打印输入的字符,代码如下:

 

char GetData;

 

While(1)

{

  scanf("%c", &GetData);

  printf("GetData = %c\n", GetData);

}

 

基于STM32F103的实例代码(其他配置原理一样)我已近打包分享给大家:

基于Keil工具的代码:

 

基于IAR工具的代码:


Ⅳ、最后

更多相关精彩的文章,可以进入我博客查看。

我的博客:

微信公众号:EmbeddDeveloper

 

本着免费分享的原则,方便大家业余利用手机学习知识,定期在微信公众号分享相关知识。如果觉得文章的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。

 

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存