打印

分享一个简单的通过Printf函数向串口打印数据的代码

[复制链接]
3563|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yesiqiu|  楼主 | 2018-10-13 12:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

怎样通过Prinf函数打印数据到串口

学习STM32过程中,经常需要查看一些采集到的数据,串口作为大部分单片机都有的外设我们可以通过它,将我们采集的数据显示出来,之前编程中熟悉的莫过于printf了,下面就给出了用printf打印到串口的方案

此次的我们要实现的功能是通过Printf函数以一定的时间间隔,向串口打印变化的数据
附上代码: 通过Printf 向串口调试助手打印变化的数据(代码).rar (389.23 KB)


串口配置在之前的教程中已经讲过,现在我们只需要两步就可以实现通过printf函数向串口打印变化的数据。

第一步:
包含Stdio.h文件到工程中


第二步:
在工程中添加用于支持printf函数的代码


在主函数中我们调用printf函数即可,


程序运行的结果


Keil  C 的标准库stdio.h:   

        stdio.h:标准输入输出头文件 (C语言标准库),其默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.

    printf函数在keil的底层:

    在keil中的标准C库中,printf、scanf等输入输出数据流函数是通过fputc、fgetc来实现最底层操作的,所以我们只需要在我们的工程中重定义这两个函数的功能就可以实现printf、scanf等数据流函数的重映射。

半主机模式:

      半主机是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。

重定义:

      就是重新再一次的定义函数,使其拥有新的定义,然后完成新的功能的过程。

重定向:

     MDK原本目标是PC机的显示器,然后由于重定向,修改了printf的底层函数(重定义),使printf打印到单片机的外设中,此次我们是打印到串口上。



主函数.png (42.17 KB )

主函数.png

相关帖子

沙发
xyz549040622| | 2018-10-13 13:21 | 只看该作者
用的是自己定义的串口输出函数,不用printf。

使用特权

评论回复
板凳
Vansm| | 2018-10-15 17:47 | 只看该作者
为什么都喜欢用printf呢   我从来不用

使用特权

评论回复
评论
dirtwillfly 2018-10-15 19:57 回复TA
我一般也不用 
地板
dirtwillfly| | 2018-10-15 19:59 | 只看该作者
Vansm 发表于 2018-10-15 17:47
为什么都喜欢用printf呢   我从来不用

一般从学习c语言然后转向单片机,刚开始对printf都会有种这种习惯吧

使用特权

评论回复
5
Vansm| | 2018-10-16 10:37 | 只看该作者
dirtwillfly 发表于 2018-10-15 19:59
一般从学习c语言然后转向单片机,刚开始对printf都会有种这种习惯吧

有可能

使用特权

评论回复
6
yesiqiu|  楼主 | 2018-10-16 13:34 | 只看该作者
Vansm 发表于 2018-10-15 17:47
为什么都喜欢用printf呢   我从来不用

用这个代码量比较小,而且不需要LCD等显示设备吧,实现起来相对容易

使用特权

评论回复
7
caijie001| | 2018-10-16 14:10 | 只看该作者
xyz549040622 发表于 2018-10-13 13:21
用的是自己定义的串口输出函数,不用printf。

PRINT_DEBUG
PRINT_INFO
PRINT_ERR

使用特权

评论回复
8
DigCore| | 2018-11-1 13:29 | 只看该作者
假如在不一样 的编译器,不是KEIL呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

56

帖子

3

粉丝