当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,这样使输出的信息很直观;但printf函数在使用时,不仅仅要初始化串口,还需要其它的一些设置或者要调用其它的一些函数,否则printf函数将不能按我们想要的方式执行。

由于不同的编译器studio函数不一样,所以使用的方法也不一样,这需要大家去看编译器的help,这里我以STM32、LPC24和AVR整理了几个串口打印程序,供需要的朋友参考。

简介:

1、在KEIL下使用printf函数,以STM32为例

在uart.c中添加如下代码

View Code

int fputc(int ch, FILE *f){ USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} return ch;}int fgetc(FILE *f){ while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) {} return (int)USART_ReceiveData(USART1);} 这样,只要在需要用printf的文件里#include就可以了,printf会自已的调用fputc函数来实现串口数据的输出。

2、添加Retarget.c,实现在KEIL下使用printf函数,以LPC2478为例

首先在Keil安装目录下面ARM/Startup/Retarget.c找到Retarget.c文件将其复制到你的工程文件夹下面;并将其加入到工程中

在uart.c中添加如下代码

View Code

// Implementation of sendchar (also used by printf function to output data) int sendchar (int ch) { // Write character to Serial Port while (!(U0LSR & 0x20)); return (U0THR = ch); } int getkey (void) { // Read character from Serial Port while (!(U0LSR & 0x01)); return (U0RBR); } 这样,只要在需要用printf的文件里#include就可以了,printf会通过Retarget中的fputc函数调用sendchar来实现串口数据的输出。

事实上,和第一种的方式是一样的。

3、自定义printf函数,以AVR为例

前面介绍的是在KEIL编译器上使用printf函数,但不是所有的编译器平台都能适用,因此有时候我们需要自定义printf函数,下面以AVR在GCC下为例

在usart.c中添加如下代码

View Code

#include#include//向串口usart0发送一个字节函数 void Uart0_putchar( unsigned char sdbyte) { UDR0=sdbyte; while(!(UCSR0A&0x40)); UCSR0A

=0x40; }void Uart0_printf(char *str,...){ char buf[128]; unsigned char i = 0; va_list ptr; va_start(ptr,str); vsprintf(buf,str,ptr); while(buf[i]) { Uart0_putchar(buf[i]); i++; }}结语:

有了printf格式化输出函数,调试起来就方便多了。

单片机c语言printf怎么用,如何在单片机上使用printf函数相关推荐

  1. 单片机c语言100例 的案例,51单片机C语言100个实例 [推荐下载】

    51单片机c语言100例 ,墙裂推荐下载 附上目录 ************************************************************函数的使用和熟悉****** ...

  2. stc15系列c语言pwm编程,STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现.docx...

    STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现 STC单片机增强型PWM发生器原理及应用主 讲:何宾Email:hebin@mail.buct.edu.cn2016.03增强 ...

  3. 8051单片机c语言编程模板,完美的8051单片机C语言编程模板.doc

    完美的8051单片机C语言编程模板.doc <8051单片机C语言编程模板> [程序开始处的程序说明] /***************************************** ...

  4. 单片机c语言编译软件6,eUIDE下载-单片机c语言编译器 v1.07.32.23 官方版 - 安下载...

    eUIDE是一款专业的单片机c语言编译器,EM78系列集成开发环境是面向项目的ELAN EM78系列微控制器的开发工具,它包括UICE开发在线仿真器和eUIDE软件工具:eUIDE是基于PC端的UIC ...

  5. 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc

    (整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...

  6. stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

    STC单片机C语言指针 主讲:何宾 Email :hebin@mail.buct.edu.cn 2016.03 C51编译器中指针的分类 Cx51编译器支持使用字符"*"声明变量指 ...

  7. 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

    基于AT89C1单片机C语言编写的计算器 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; ...

  8. 单片机c语言三种经典程序结构,单片机C语言程序的结构和设计精选.docx

    单片机C语言程序的结构和设计精选 实验五 单片机C语言程序的结构和设计一.实验目的1. 掌握单片机C语言的程序结构:2. 掌握单片机C语言程序的编写和调试方法:3. 掌握MSP430FG2553基本I ...

  9. 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  10. 单片机c语言期末考试题(a)的答案,单片机C语言期末考试题(A).doc

    单片机C语言期末考试题(A) 一.单项选择题:40 分 1.MCS-51系列的单片机中片内RAM的字节大小可能的是( ) A.128M B.128K C.128 D.64 2.C51语言提供的合法的数 ...

最新文章

  1. jquery 实现iframe 自适应高度
  2. ajax php 区别,PHP中AJAX比较(转)
  3. C# 泛型(Generic)
  4. c++中stringstream_文史哲与艺术中的数学_智慧树章节答案
  5. 五、Vue模块化开发学习笔记——JavaScript原始功能、匿名函数的解决方案、使用模块作为出口、CommonJS、ES6 export和import的使用
  6. 引用管理器没有程序集_Excel结构化表与名称管理器
  7. 在做自动化测试之前你需要知道的
  8. 北京大学生物信息学(3)
  9. 摘抄 ander图片上传
  10. Kata: 从随机的三字符列表组中恢复秘密字符串
  11. ABAP MIR7预制凭证BAPI
  12. 2022机器学习好网站大收藏
  13. python基础知识集(三)
  14. SQLyog Ultimate旗舰版软件安装使用
  15. 2021高考热度最高专业,大数据分析告诉你
  16. 两个List<T>对象做对比
  17. LED灯具耐压测试怎么做?耐压测试电压多少?
  18. 实时无感人脸识别考勤机项目
  19. 中国更需张瑞敏还是任正非
  20. menu显示菜单和提供选择

热门文章

  1. 名帖243 唐寅 行书《题跋达摩六代祖师图》
  2. SRE培训哪个培训机构好一些?
  3. Git图形界面的使用
  4. cpu虚拟化怎么开启(华硕主板cpu虚拟化怎么开启)
  5. 美团组件路由原理与实现详解
  6. C/C++财务报销审批
  7. 通过netdrive软件连接tfcenter的webdav服务进行文件管理
  8. Java 参数 -Xms 和 -Xmx
  9. 风靡全国的区块链产业园,为何叫好不叫座?
  10. 如何实现换脸呢?只要一款安卓软件,不需要编程知识