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
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371170
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144617
  • Printf
    +关注

    关注

    0

    文章

    84

    浏览量

    14629
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    scanf函数介绍

    scanf函数向字符型数组输入数据char a[20]; scanf(\"%s\", a); 错误 scanf(%s\",a); 正确 用scanf函数向数值型
    发表于 12-02 06:07

    求助,关于C代码printf打印的疑问求解

    使用E203 testbench执行附带的benchmark测试用例时候,得到如下打印信息: CPU验证小白一枚,有个问题不是很理解:黄色框框内的字符看起来应该是C代码printf语句
    发表于 11-10 07:54

    Arty移植蜂鸟E203后,发现不支持scanf函数,怎么解决?

    本人想用Arty A7 35T做一些基于蜂鸟E203的串口交互开发,目前已经移植并且成功运行了printf函数。 测试scanf函数的时候,发现结果不理想(好吧其实就没反应),于是读
    发表于 11-07 07:13

    Proteus配置STM32外部时钟HSE如何配置

    有大佬会配置ProteusSTM32F103C8的外部时钟吗 这个proteus打印不出来数据,但是实物的连接
    发表于 11-02 13:54

    printf函数hbird SDK的应用

    helloworld的例程,使用到了printf函数,通过串口输出了数据。 Nuclei Studio通过teminal窗口可以查
    发表于 10-31 08:48

    对于STM32CubeMx使用FMC的NAND FLASH里面配置这些时间有什么说明吗?

    对于STM32CubeMx使用FMC的NAND FLASH里面配置这些时间有什么说明吗?
    发表于 07-21 07:07

    瑞萨RA单片机e2 studio环境下printf编译出错的问题解析

    最近看到有一些网友讨论关于:瑞萨RA单片机e2 studio环境下printf编译出错的问题。
    的头像 发表于 05-24 15:51 1228次阅读
    瑞萨RA单片机<b class='flag-5'>在</b>e2 studio环境下<b class='flag-5'>printf</b>编译出错的问题解析

    STM32开发入门进阶必备!《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》新书发布!

    上市。高校教学推荐,STM32入门必读!图书介绍《STM32嵌入式系统开发——基于STM32CubeMX和HAL库》是一本介绍嵌入式系统
    的头像 发表于 04-03 14:54 1367次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>开发</b>入门进阶必备!《<b class='flag-5'>STM32</b>嵌入式系统<b class='flag-5'>开发</b>—基于<b class='flag-5'>STM32</b>CubeMX和HAL库》新书发布!

    STM32开发板教程之STM32开发指南免费下载

    介绍了几个常用的系统文件(程序);3,实战篇,主要通过 56 个实例(绝大部分是直接操作寄存器完成的)带领大家一步步深入 STM32 的学习。   本指南为 ALIENTEK 战舰 STM32 开发板的配套教程,
    发表于 02-28 09:08 179次下载

    STM32MP25x开发板Bring Up培训课程(下)

    STM32MP25x开发板BringUp培训课程(上)STM32MP25x开发板BringUp培训课程()米尔基于
    的头像 发表于 02-27 08:03 1169次阅读
    <b class='flag-5'>STM32</b>MP25x<b class='flag-5'>开发</b>板Bring Up培训课程(下)

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    工程师开发利器:STM32CubeMX 与 eDesignSuite 的协同开发

    CubeMX 的核心功能与优势STM32CubeMX 是 ST 官方推出的图形化配置工具,专为简化 STM32 微控制器开发流程而设计。以下是其核心功能和优势:硬件
    的头像 发表于 02-26 14:07 1115次阅读
    工程师<b class='flag-5'>开发</b>利器:<b class='flag-5'>STM32</b>CubeMX 与 eDesignSuite 的协同<b class='flag-5'>开发</b>

    STM32F1开发指南

    这本书详细讲述了STM32HAL库开发配置流程,非常详细
    发表于 01-21 15:33 3次下载

    试用报告1--关于PG2L100H开发板启动选项配置的问题

    查阅开发板各种资料的过程中发现不同资料中关于芯片启动选项的配置描述不统一,比如原理图中通过QSPI Flash启动的时候应该配置为0010(如图1所示),但是
    发表于 12-29 21:13

    stdio.h实现了printf函数?

    printf 函数,作用就是告诉编译器,printf 是个函数,编译的时候不要报错。 至于 printf 的实现,
    的头像 发表于 12-18 10:28 869次阅读