// 添加头文件
#include "stdio.h"  
#include "stdarg.h"   
//全局变量
bit TI_busy;
unsigned char idata putBuf[100];  //最大数量
/*  idata注释:
定义一个字节型的变量,这个变量保存在RAM的idata区.单片机的存储主要分为四个区域:data、idata、code、xdata。
  data区:单片机能直接访问的直接寻址RAM区,00H-7FH
  idata区:单片机间接防问的RAM区,80H-FFH
  code区:单片机的内部程序存储区,也就是单片机内置的FALSH
  xdata区:单片机外部寻址区,一般指片外的存储器,0000H-FFFFH
*/
// 串口打印函数实现 
void debug_printf(char* fmt,...)
unsigned char i,len;
va_list ap;                  //定义变量为字符指针
va_start(ap, fmt);              //获取可变参数列表的第一个参数的地址
len = vsprintf((char*)putBuf, fmt, ap);     //将可变列表拷贝至缓冲区
va_end(ap);                //清空va_list可变参数列表
for(i = 0; i < len; i++)         //把缓存内的字符发送出去
{   
while( TI_busy );                //等待前面的数据发送完成  
TI_busy = 1;   
SBUF = putBuf[i];      //发送一个字节
memSet(putBuf, 0, sizeof(putBuf));   //清空缓存(自己实现)
}
//main入口函数
void main()  
unsigned int i; 
UartInit();         //串口初始化
EA=1;          //开总中断  
while(1)
debug_printf(" Hello World ! ");  
debug_printf("  i = %03d, 0x%03X\r\n", i, i++);  
delayMs(1000); 
}
//中断处理函数    
void Uart1() interrupt 4 
if(RI)            //接收
RI = 0;         //清标志  
else            //发送
{   
TI = 0;         //清标志  
TI_busy = 0;      //非忙
}

转载于:https://www.cnblogs.com/ownDefine/p/10873625.html

MCU中printf重定向实现相关推荐

  1. STM32中printf重定向到串口

    学习STM32过程中,经常打交道的莫过于串口,你可以将任何信息,当然重要的是调试信息打印到串口中输出,总是用一个字节发送函数或者字符串发送函数 总是有些不放便,之前编程中熟悉的莫过于printf了,下 ...

  2. stm32中如何进行printf重定向用于串口调试输出

    1 在main中包含stdio.h 文件 2 Target选项框里选Use MicroLib 选项 3 在main中添加UART1_Configuration()初始化的代码 Uart1初始化, vo ...

  3. 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向

    文章目录 一 将程序运行结果输出到txt文本文件中 二 排序算法 三 生成随机数 四 异常处理 六 关于GitHub上zip与tar.gz的区别 七 容器中查找最大值所在的位置 八 C++中关联容器的 ...

  4. 本地方法中printf如何传给java--java系统级命名管道

    本地方法中printf如何传给java--java系统级命名管道 摘自:https://blog.csdn.net/dog250/article/details/6007301 2010年11月13日 ...

  5. c语言输入输出重定向到串口,关于printf重定向到串口的问题分析 - 全文

    关于printf重定向到串口的问题 简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosTIng(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口 ...

  6. STM32 - Printf重定向使用微库、不使用微库(Keil) (转载)

    Stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: 1.使用微库(平台式keil-MDK),点击&quo ...

  7. Stm32 - Printf重定向(不)使用微库(Keil MDK)

    #define DEBUG_USART USART1 stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: ...

  8. fputc函数重写实现printf重定向

    一,printf重定向原理 1,自己重写C的库函数 链接器检查到用户编写了与C库函数相同名字的函数时,优先调用用户编写函数,这样就可实现重定向 2,重定向printf()函数 需重写fputc()这个 ...

  9. keil5 stm32f03c8t6 printf重定向到串口和TFT 1.44 LCD屏

    效果 keil5工程设置,这一步很重要: 在任意的源文件里重写int fputc(int ch, FILE* f)函数 代码: print.h #ifndef __PRINT_H__ #define ...

最新文章

  1. .NET简谈组件程序设计之(详解NetRemoting结构)
  2. FPGA中系统运行频率计算方法与组合逻辑的层级
  3. 动手动脑问题2加课堂练习
  4. 2018年全国及31省市数据中心相关政策汇总及解读「全」
  5. 小白学数据分析-----从购买记录分析道具支付环节
  6. 蓝桥杯小白系列之汇编点亮led灯
  7. 串口速度,RS232与MAX232的区别
  8. abb机器人gsd文件_ABB机器人控制器死机故障维修
  9. java编程给三个数字排序_JAVA程序.输入3个数字,有IF语句,从小到大排序
  10. WIN7使用各种激活软件都不管用的解决办法
  11. 电子招投标——电子投标书制作教程
  12. 2022年最新微博批量删除代码_自动化删除新浪微博代码
  13. Matplotlib制作动画
  14. 蚂蚁的开放:想办法摸到10米的篮筐 1
  15. 百度数据可视化Sugar BI — 表计算
  16. android的aod的功能,一加正式推出氢OS 11:基于安卓11打造 新增「年轮AOD」功能
  17. HDU 6441 Find Integer
  18. java毕业设计校园快递柜存取件系统(附源码、数据库)
  19. 计算机网络(6)体系结构:计算机网络协议、接口、服务的概念
  20. git push时候出现错误:unable to access‘xxx‘:the requested url returned error

热门文章

  1. vue 仿二手交易app_项目vue2.0仿外卖APP(七)
  2. 方正ceb阅读器手机版_海信阅读手机A5Pro 经典版评测:体验和阅读完美平衡
  3. 无极菜单 php,ThinkPHP菜单无极分类 ThinkPHP菜单无极分类实例讲解
  4. 基于matlab编译码器的设计,基于MATLAB循环码编译码仿真
  5. 位地址和字节地址换算_关于ip地址的详解,看完这篇就够了
  6. jQuery scroll事件
  7. 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
  8. 【ORACLE SQL 语言】SQL语言四大类
  9. 【git】【eclipse】免密/SSH 方式连接免登录
  10. linux can编程,linux CAN编程(二)----------- can_frame中can_id的数据组织形式及处理