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

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

3天内不再提示

还不会吗?三分钟让你速通Printf~

朱老师物联网大讲堂 2024-07-27 08:11 次阅读

一、Printf简介

Printf是一个标准的c库API,用来打印信息显示的。

Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putchar函数。

Printf主要做两件事:第一件是将参数字符串以及可变参数进行解析,格式化成一串字符串。第二件事就是将格式化的字符串一个字节一个字节的输出出去(至于以什么样的方式输出那就得看底层的实现了,比如有OS的情况下就是输出在命令行下的)。

二、串口和Printf

  • 嵌入式设备中一般有两种调试方法,一种是硬件调试无序软件干预(利用厂商提供的仿真器和应用软件),另一种是软件调试(利用串口发送调试)。一般在系统初始阶段串口无法使用的情况下都是用的硬件进行调试但是这种方式不太灵活,限制很多,能用软件调试尽量都用软件,这种方式比较灵活。
  • 串口设备本身只能将我们写入数据寄存器的数据发送出来,无法支持更多的功能。比如将存放十进制的数据的变量转换成字符形式再发出去,这样我们人才识别。而标准库的printf就是实现了这些功能。
  • Printf的第一件事主要是软件实现的我们不用管,而第二件事就是输出到那个地方,所以我们只需要将fputc或者__io_putchar函数实现为串口的发送,将Printf打印的信息打印到串口助手显示区。代码如下:

b5b8880c-4bac-11ef-817b-92fbcf53809c.png

除此之外,我们还要再做一点配置工作——禁用半主机模式,禁用了半主机模式才能使用标准库函数Printf()打印信息到串口,在程序中加入以下代码即可。那么什么是半主机模式?为什么不用它?半主机模式是ARM单片机的一种调试机制,跟串口调试不一样的是,它需要通过仿真器来连接电脑和ARM单片机,并调用相应的指令来实现单片机向电脑显示器打印信息(或者从电脑键盘读取输入)。简而言之,这种方法比串口调试更复杂(需要进行更多的配置操作),也更不灵活(一定要用仿真器)。

b5d57be2-4bac-11ef-817b-92fbcf53809c.png

上面的配置似乎有点麻烦,要加入这么一堆难懂的代码,难道没有更简便点的方法吗?有,但不推荐。方法是使用微库(MicroLIB),只要在Keil的“Options for Target -> Target ->Use MicroLIB”上打勾,即可使用串口打印(fputc()函数还是要实现,但上述的禁用半主机代码不用加)。微库是区别于C标准库的另一个库,当使用微库时,就默认关闭了半主机模式,也就不用添加上面的代码。这样虽然方便,但个人建议能不用就不用,原因:第一,微库是为小内存嵌入式设备而设计的,使用它可以减少代码所占空间,但对现在STM32等单片机来说,内存一般都够用,微库并非必需;第二,微库相对于C标准库而言,支持的功能更少,主要体现在对操作系统的支持上。总的来说,标准的东西总是相对更可靠,所以不必要的掉坑,还是用C标准库,不用微库。

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

    关注

    3

    文章

    4276

    浏览量

    62314
  • 嵌入式设备
    +关注

    关注

    0

    文章

    110

    浏览量

    16925
  • Printf
    +关注

    关注

    0

    文章

    81

    浏览量

    13602
收藏 人收藏

    评论

    相关推荐

    免费三分钟

    免费三分钟回拨电话,,绿色的,对号码有次数限制.有三分钟通话时长,,反其道而行不就又是三分钟,请各位灵活运用(见例)假如我的电话是1301309****,而我要打的电话是1386551****.把
    发表于 03-02 17:27

    职场启示: 三分钟碎片化

    也无法写好。 明白这一点,就会意识到,有些工作的确需要大块的时间,但如果不是提前做够铺垫,这些大块的时间并不会有效率。 所以我自己的习惯是“五分钟方案法”。也就是说: 一份完整的方案=5分钟
    发表于 08-07 14:06

    电阻、感抗、容抗、阻抗三分钟理清它们的关系

    电阻、感抗、容抗、阻抗究竟谁是老大?三分钟理清它们的关系电感、电阻、电容电阻、感抗、容抗、阻抗四个名词活跃在各种电路中,它们是什么关系了?且听慢慢道来。一、电阻:这是我们最熟悉不过的东东了,在初中
    发表于 12-06 08:55

    程序运行三分钟,停一分钟,循环下去,直到设置停止循环的位置

    本帖最后由 我想看看太阳 于 2022-6-9 11:52 编辑 这个程序运行三分钟,停一分钟,循环下去,直到设置停止循环的位置,需要添加什么模块才能实现呢
    发表于 06-08 15:03

    三分钟明白电池为什么会鼓包

    三分钟明白电
    发表于 11-12 08:18 7.1w次阅读

    三分钟能做什么?三分钟能让我的iPhone6s重启N次!

    苹果系统是以稳定著称,不过这位网友发来求助,称自己的iPhone6s三分钟时间重启了N次。并且拍了视频,系统为IOS10.2.1。
    发表于 02-25 10:18 2564次阅读

    小米扫地机器人台湾开售 三分钟售罄

    首批小米扫地机器人于4月6日如约在台湾地区开售,售价8895台币(约合1915元人民币),开售三分钟,5000台扫地机器人在小米台湾官网即告售罄。
    发表于 04-07 10:45 1226次阅读

    三分钟概述8类常用元器件资料下载

    电子发烧友网为提供三分钟概述8类常用元器件资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 03-28 08:40 6次下载
    <b class='flag-5'>三分钟</b>概述8类常用元器件资料下载

    三分钟看懂工字型功率电感外观破损的常见原因gujing

    三分钟看懂工字型功率电感外观破损的常见原因gujing  编辑:谷景电子 关于功率电感的相关问题最近给大家做了一些小科普,有关注选型的、有关于性能特点方面、以及有关于如何解决功率电感使用中温升高
    发表于 11-09 13:54 776次阅读
    <b class='flag-5'>三分钟</b>看懂工字型功率电感外观破损的常见原因gujing

    Brocade帮助Netzlink实现三分钟云服务供应

    电子发烧友网站提供《Brocade帮助Netzlink实现三分钟云服务供应.pdf》资料免费下载
    发表于 08-29 10:12 0次下载
    Brocade帮助Netzlink实现<b class='flag-5'>三分钟</b>云服务供应

    快乐解说MCU:三分钟,带你了解低功耗MCU

    快乐解说MCU:三分钟,带你了解低功耗MCU
    的头像 发表于 09-18 10:56 1258次阅读

    三分钟实现MQTT协议网关串口连接菱FX3UPLC上传腾讯云

    三分钟实现MQTT协议网关串口连接菱FX3UPLC上传腾讯云
    的头像 发表于 10-23 16:23 948次阅读
    <b class='flag-5'>三分钟</b>实现MQTT协议网关串口连接<b class='flag-5'>三</b>菱FX3UPLC上传腾讯云

    三分钟看懂雪崩光电二极管

    三分钟看懂雪崩光电二极管
    的头像 发表于 11-23 09:09 1789次阅读
    <b class='flag-5'>三分钟</b>看懂雪崩光电二极管

    三分钟了解飞创直线电机运动模组特点、选型及应用-FCL系列

    三分钟了解飞创直线电机运动模组特点、选型及应用-FCL系列
    的头像 发表于 02-05 16:28 537次阅读
    <b class='flag-5'>三分钟</b>了解飞创直线电机运动模组特点、选型及应用-FCL系列

    Node-RED初学者教程-三分钟学习

    通过这短短三分钟的教程,已经掌握了Node-RED的基本操作。可以利用Node-RED的强大功能来创建更复杂的数据流和自动化任务,无论是物联网应用、API集成还是数据处理。Node-RED简化了编程过程,让开发更直观、更高效
    的头像 发表于 06-27 17:09 2184次阅读
    Node-RED初学者教程-<b class='flag-5'>三分钟</b>学习