KEIL编程中如何重定义printf()函数,以便在后来的开发中使用此函数进行串口数据输出
直接把下面一段代码添加进usart.c文件,或者任意一个.c文件中,注意不要添加在.h文件中,因为.h文件都是要在预编译的时候加载在.c文件的前面的,如果你将下面的这段代码添加进一段.h文件中了,那么如果你在后面的程序中多次include了这个.h文件,那么KEIL编译后就会提示多次重复定义的错误,所以应该把这段代码添加进.c文件中。
//加入以下代码,支持printf函数,可以在其他地方任意使用printf();
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
void _sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
KEIL编程中如何重定义printf()函数,以便在后来的开发中使用此函数进行串口数据输出相关推荐
- 关于WINSOCK.H与winsock2.h中的重定义解决办法分析
windows.h与winsock2.h的包含顺序 大凡在Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多 ...
- printf函数 重定义printf函数。
printf 的宏定义版本 前言: 我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这 ...
- c++中的重定义,重包含。
重定义 1.重定义的概念 一个变量被直接或者间接多次定义导致的错误 导致重定义的三种情况 第一种:就是同一个变量多次在一个文件中定义,例如:int a=1;int a=2;(a就是 重定义) 第二种: ...
- mysql timespec重定义_MySQL:半同步(二)主库端回调函数
源码版本5.7.29 主库端的回调函数比较多,比较复杂 一.回调函数:repl_semi_binlog_dump_start 调用线程:dump线程 #0 repl_semi_binlog_dump_ ...
- android中的mvp模式怎么定义,详解MVP模式在Android开发中的应用
一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Mode ...
- python中的装饰器有哪些-python 装饰器以及开发中常用的例子
有时候我们想为多个函数,同意添加某一种功能,比如及时统计,记录日志,缓存运算结果等等,而又不想改变函数代码 那就定义装饰器函数,用它来生成一个在原函数基础添加了新功能的函数,代替原函数 参考金角大王的 ...
- protobuf在java中使用_记录:Protocol Buffers(protobuf)在Java开发中使用
1.编写一个.proto文件命名为:addressbook.proto,该文件内容来自protocal-buffers官网 2.使用protoc-2.6.0-win32.zip解压后的protoc.e ...
- python中不被定义_一日一技:在Python中双下划线私有方法不能被调用的原理
一日一技:在Python中双下划线私有方法不能被调用的原理 在使用Python编写面向对象的代码时,我们会常常使用"继承"这种开发方式.例如下面这一段代码: class Info: ...
- 初识C++之函数重载、重写、重定义的区别
在C++的学习中,慢慢接触了一些很容易混淆的名词,今天就来剖析几个容易混淆的名词. 1.函数重载 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同 ...
- C语言中重定义 错误
假设有三个文件 node.h //定义节点 list.h //对链表的操作函数 test.c //测试函数 包含关系如下: list.h中 #include "node.h" te ...
最新文章
- 浅谈动态人脸识别技术原理
- 字节跳动取消大小周后首次发薪,员工炸锅:薪资普降 17%
- Skyline 扩展模块简介
- 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%
- 修改tomcat端口号的方法:
- 蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744
- 2440按键中断编程
- java字节码反编译_javap 反编译 java 字节码文件
- Discuz!NT 缓存设计简析
- 自学前端,需要学习哪些知识点?学多久可以入职前端工程师?
- 2018全球最值得关注的60家半导体公司,7家中国公司新上榜 | 年度榜单
- 手动卸载office 2010 亲测有效
- pngimg 可以商用吗_超级干货,30个无版权免费商用高清素材网站整理(设计师必备灵感源泉)...
- 渗透测试-灰鸽子远控木马
- YOLOv1论文中英文对照翻译
- 数据安全需要做什么?
- 数据库DQL单表查询
- proxmox ve 7.2 AMD显卡直通 网卡驱动 调度器
- vb.net操作数据库之ACCESS(一)
- HDFS 本地编程报错java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168