打印
[STM8]

STM8S单片机printf函数重定向到串口

[复制链接]
2081|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玛尼玛尼哄|  楼主 | 2018-6-20 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
printf函数是一个功能非常强大的函数,在单片机的调试过程中经常会要适时地输出变量的值,这时printf函数是一个非常好的选择;对于一般的单片机只有串口可以与外界进行通信,所以我们需要将printf函数重定向到串口;在这里会涉及到两个关键问题:函数的重载和函数的重定向问题;

        首先是函数重载的问题;函数重载的主要用途之一是利用函数的多态性来实现用多种方法去实现同一接口功能;总而言之不管printf函数是多么的复杂,但是归根结底使用的最低层的函数是putchar函数;purchar函数与具体的硬件结构打交道;所以实现重载就是根据具体不同的硬件结构去实现不同的putchar实体功能;所以在这里我们只需要修改putchar的实体,要注意函数重载的要求,函数名相同,但是形参不能完全相同;但是在STM8S中按照函数重载的要求定义了两个putchar函数,库自带的putchar原型为:int putchar(char);我在文件中自定义文件为int putchar (unsigned char);编译会出错:redeclared external putchar;将函数原型改为
char putchar (char);编译则能通过;那我只能使用的编译器COMSIC不支持函数重载功能;
沙发
玛尼玛尼哄|  楼主 | 2018-6-20 17:08 | 只看该作者
网上看到的,觉得不错,转载来。

使用特权

评论回复
板凳
wangjiahao88| | 2018-6-20 17:11 | 只看该作者
可以时任意的串口吗?

是标准的 printf吗?

使用特权

评论回复
地板
longchengmuyun| | 2018-7-11 16:41 | 只看该作者
任何一个IO口都可以重定向然后输出数据么,楼主有  实现功能么?有.C .H文件么

使用特权

评论回复
5
ayb_ice| | 2018-7-11 16:48 | 只看该作者
这是基本问题

使用特权

评论回复
6
yanhaijian| | 2018-7-12 08:37 | 只看该作者
wangjiahao88 发表于 2018-6-20 17:11
可以时任意的串口吗?

是标准的 printf吗?

只要重载一下int putchar(char)函数,这个可以参考市面上的开发板,他们都有相关例程。

使用特权

评论回复
7
wangjiahao88| | 2018-8-7 09:28 | 只看该作者
只要重载一下int putchar(char)函数???

这个还需要下载吗?

使用特权

评论回复
8
xixi2017| | 2021-11-12 11:45 | 只看该作者
解决了吗

使用特权

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

本版积分规则

174

主题

3057

帖子

2

粉丝