0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-24 10:50 次阅读

Ⅰ、写在前面

在我们学习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工具的代码:

http://pan.baidu.com/s/1kUELHnL

基于IAR工具的代码:

http://pan.baidu.com/s/1nuILwed

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348735
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128533
  • Printf
    +关注

    关注

    0

    文章

    79

    浏览量

    13478
收藏 人收藏

    评论

    相关推荐

    macos下SW4STM32编译,调用printf异常怎么解决?

    刚开始MACOS下开发STM32的程序,现在出现了一些很奇怪的问题,看是否大家有遇到这样的问题。 开发配置如下 1.STM32cube42
    发表于 04-17 06:48

    使用cubeIDE配置的工程printfFreeRTOS线程任务无法使用怎么解决?

    使用cubeIDE配置完工程后,对printf进行了重映射,并且把例程的syscalls.c也拷贝到了工程,能够使用printf输出。但
    发表于 04-17 06:19

    stm32f103rct6 prinrf可以正常使用,但是无法使用getchar和scanf函数,为什么?

    已使用如下代码重定向,prinrf可以正常使用,但是无法使用getchar和scanf函数,求大佬解答 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int
    发表于 04-09 07:47

    STM32的疑难杂症之一:Printf的使用

    一、Printf简介Printf是一个标准的C库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putchar函数
    的头像 发表于 04-02 08:09 193次阅读
    <b class='flag-5'>STM32</b>的疑难杂症之一:<b class='flag-5'>Printf</b>的使用

    求助,关于STM32CUBEIDE1.5.0使用Printf函数的疑问

    基于eclipse的,就把工程弄到STM32CUBEIDE,但怎么都不OK 自己从新从STM32CUBEMX到STM32CUBEIDE建工程,发现可以烧录进去,LED跑起来了,但是
    发表于 03-22 06:47

    c语言scanf的正确使用及技巧

    C语言的scanf函数是用来从程序的标准输入或文件中读取输入的函数。它可以从键盘读取用户输入,并将其存储在变量中。虽然scanf函数简单易用,但正确使用和理解它是非常重要的。本文将详尽介绍scanf
    的头像 发表于 11-24 10:04 962次阅读

    c语言怎么用scanf输入字符串

    : # include int main () { char name[ 20 ]; printf ( "请输入您的姓名: " ); scanf ( "%s" , name); printf ( "您好
    的头像 发表于 11-24 10:03 1067次阅读

    scanf在C语言中的作用

    scanf在C语言中的作用  scanf是C语言中的输入函数,用于从标准输入设备(如键盘)读取数据,并将其存储到变量中。它是C语言中最常用的标准库函数之一,对于控制台交互式程序开发
    的头像 发表于 11-23 14:13 570次阅读

    stm32怎么用printf函数?

    STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一
    发表于 07-31 10:16

    基于STM32的FreeRTOS开发(2)----Cube工程的FreeRTOS配置

    STM32Cube是STMicroelectronics提供的一种软件工具,用于配置和生成STM32微控制器的固件。它提供了一个图形化用户界面,可以轻松配置微控制器的各种功能和外设,并
    的头像 发表于 07-27 09:53 1278次阅读
    基于<b class='flag-5'>STM32</b>的FreeRTOS<b class='flag-5'>开发</b>(2)----Cube工程的FreeRTOS<b class='flag-5'>配置</b>

    STM32F407 串口配置步骤

    介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
    的头像 发表于 07-06 14:29 1886次阅读
    <b class='flag-5'>STM32</b>F407 串口<b class='flag-5'>配置</b>步骤

    keil5.14debug模式下Debug(printf)Viewer窗口无串口输出,要怎么配置

    用的是NuTiny-SDK-Nano130开发板,示例代码,printf最终输出的数据函数fputc是通过UART0输出的,我外接串口到PC后,能在PC上的串口终端看到printf
    发表于 06-28 07:49

    STM32的GPIO在实际开发设计的使用配置和技巧

    一、前言 本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。 了解过STM32
    的头像 发表于 06-22 10:22 519次阅读
    <b class='flag-5'>STM32</b>的GPIO在实际<b class='flag-5'>开发</b>设计的使用<b class='flag-5'>配置</b>和技巧

    【瑞萨RA MCU创意氛围赛】2. KEIL下串口重定向printfscanf

    【瑞萨RA MCU创意氛围赛】1. PWM驱动LED以及STLINK下载配置 前言 学习C语言,最开始学习的就是printfscanf,用于接收信息和打印信息,但是电脑上,
    发表于 05-26 13:41

    请教大神怎么解决STM32不能使用printf函数的问题呢?

    请教大神怎么解决STM32不能使用printf函数的问题呢?
    发表于 05-05 10:13