找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12296|回复: 3
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:65608 发表于 2014-9-6 01:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


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不支持函数重载功能;

暂时先说到这里了。。。。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:68072 发表于 2014-10-29 16:51 | 只看该作者
楼主你说完啊啊
回复

使用道具 举报

板凳
ID:69003 发表于 2014-11-18 21:29 | 只看该作者
过来学习一下。
回复

使用道具 举报

地板
ID:618760 发表于 2019-10-2 12:09 | 只看该作者
原先的STDIO.H中已經有定義了char putchar(char c);
所以重新定義的時候,要不就自己的定義符合STDIO.H內的宣告,要不就修改STDIO.H的宣告。

遇到類似的問題,剛剛已經解決的,順便分享一下!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表