基于STM32F103C8T6芯片:如何在STM32单片机中通过串口实现输出(接收)任何格式的数据

        C语言中printf函数默认输出设备是显示器,如果要实现在串口或者LCD上显示,必须重定义标准库函数里调用的与输出设备相关的函数。比如使用printf输出到串口,需要将fputc里面的输出指向串口,这一过程就叫重定向。

                核心思想:利用C语言特性中的”就近原则”;
那么如何让STM32使用printf函数呢?

        那么我们首先需要知道为什么我们需要实现printf的重定向?

        在Windows编译器中我们知道,printf可以输出很多种格式的数据,例如:%d、%s、%c、%x等等。但是在STM32中,我们需要向串口或者lcd上显示,只能通过串口在USARTx_ODR上以字符的格式进行读取和发送。那么也有可以勉强实现传输字符串的方式如下图所示

可以将要发送的字符串的地址通过这个封装的函数进行传输,实质上也是通过字节进行数据传输。那我们想要传输数字,难道还需要将数字转换成字符后再输出吗?这样效率上就太慢了!

        由此,我们希望在单片机上也能够实现输出“自由”!所以,业界大能就想到了基于<stdio.h>

(标准输入输出库)对printf的底层函数进行移植,或者说是进行“打劫”!

        串口想要使用printf需要对printf重定向,也就是需要重定义fputc(),这个函数是 printf的底层函数。劫取

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值