最近在朋友那学到了如何重定义STM32的printf类似函数,在这做下记录:

调用C语言库函数文件具体是哪一个我忘记了,都加上吧  ^_^

#include <stdio.h>                        //uart redirect fputc
#include <string.h>                        //copy function
#include <stdarg.h>                        //va_start /vsnprintf /va_end function

1、功能函数:


#define DEBUG_UART      &huart2     //串口调试口/******************************************************************************************
*** 函数名称: Debug_Printf
*** 输入参数: 无
*** 返 回 值: 无
*** 说    明:自定义串口 printf功能
*** 功能说明:
*** 编者                                      时间                              版本
*** XX                                      2020/12/8                               V0.1
******************************************************************************************/
void Debug_Printf(UART_HandleTypeDef *huart, char *format, ...)
{uint8_t uart_buff[256];uint8_t *pStr = uart_buff; uint16_t delay_max; va_list ap;va_start(ap, format);                                        //初始化 ap 变量vsnprintf((char *)pStr, sizeof(uart_buff), format, ap);      //可变参数。用于向字符串中打印数据、数据格式用户自定义va_end(ap);                                                 //允许使用了 va_start 宏的带有可变参数的函数返回while((*pStr) != '\0'){delay_max =0;HAL_UART_Transmit(huart, (uint8_t *)pStr, 1, 0xFFFF); while(__HAL_UART_GET_FLAG(huart,UART_FLAG_TC) != SET)          //等待发送完成{if(delay_max >0xFFF) break;delay_max++;}pStr++;                                                             //address data add}
}

2、功能测试:

void test(void)
{uint8_t test_value[5];float test_float;test_value[0] = 'A';test_value[1] = 'b';test_value[2] = 88;test_float = 66.66;Debug_Printf(DEBUG_UART, "test  string        \r\n");Debug_Printf(DEBUG_UART, "test   char: %c  \r\n",    test_value[0]);Debug_Printf(DEBUG_UART, "test   char: %c  \r\n",  test_value[1]);Debug_Printf(DEBUG_UART, "test    int: %d \r\n",   test_value[2]);Debug_Printf(DEBUG_UART, "test  float: %.2f \r\n", test_float);}

3、调试

STM32自定义printf功能方法相关推荐

  1. VxWorks 7 RTP调用自定义IOCTL 功能方法

    由于VxWorks7中无法调用用户自定义的功能,需要使用scMemVal 库 scIoctlGroupRegister( )注册ioctl功能组. 示例 #include <scMemVal.h ...

  2. 【教程】摆脱UART,仅用JLink也能实现printf功能!! /*更新scanf*/

    Printf函数在单片机调试过程中可谓功不可没,开发人员可以很直观很方便的获取当前程序的运行状态.但在例如STM32这样的片子中,想要实现printf,就必须借助UART.有没有办法仅凭一个JLink ...

  3. 升级IOS8游戏上传自定义头像功能失效的问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...

  4. 绝地求生自定义服务器租用,绝地求生自定义服务器怎么开 自定义服务器设置方法...

    绝地求生自定义服务器怎么开呢?自定义服务器已经开启设置了,玩家们可以已自己的方式享受游戏,但一些玩家还不知道自定义服务器设置方法,那下面就来看下吧. 自定义服务器玩法介绍 当创建自己的自定义游戏时,你 ...

  5. python画简单的图形的代码-Python实现画图软件功能方法详解

    概述 虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户 ...

  6. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...

  7. java自定义迭代器作用_Java实现的自定义迭代器功能示例

    本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...

  8. pccad自定义图框_(PCCAD自定义标题栏详细方法.doc

    PCCAD2011自定义标题栏详细方法 下面以图3-1为例说明标题栏的自定义过程. 图3-1 1.新建文件(用New 命令). 2.用绘图和文字中的相关命令设计出图3-1所示的图形.其中在使用中不变的 ...

  9. 自定义控件添加属性_|AutoCAD LT 2019 Mac自定义功能区的方法

    AutoCAD LT是一款非常好用的CAD三维设计绘图软件,最新版本2019拥有改进的桌面.新应用实现跨设备工作流,以及DWG比较等新功能,并且AutoCAD LT 2019 Mac可以根据你的需要和 ...

最新文章

  1. HDU1269(强连通分量)
  2. R语言可视化分面图、多变量分组多水平t检验、可视化多变量分组多水平分面条形图(faceting bar plot)并添加显著性水平、在标签和绘图上边框之间添加15%的空格、添加抖动数据点
  3. map获取数字与int比较
  4. (Python)时序预测的七种方法
  5. 实战深度强化学习DQN-理论和实践
  6. Python+OpenGL进行立方体多纹理映射
  7. halcon 差异模型 异物_基于HALCON的形状匹配算法的研究和心得总结
  8. 实现房源15天后自动下架记录
  9. 详解两个栈实现一个队列(python实现——经典面试题)
  10. 自动对焦模式与af区域模式_什么是自动对焦,不同模式意味着什么?
  11. 利用Jquery实现动态增加、修改html元素
  12. 使用jQuery实现轮播图
  13. Open OnDemand部署安装使用手册
  14. elastix2.5vtigercrm5.2.1来电弹屏和点击呼叫的配置
  15. python常数_SciPy所有常数解释
  16. 如何提升程序员的非技术才能
  17. Training: PHP LFI (Exploit, PHP, Training)
  18. Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...
  19. 使用USB 3G上网卡+树莓派搭建接受短信自动转发邮箱的服务
  20. android相册隐藏拍照按钮,你绝对不知道的4大手机“隐藏”拍照功能!学会100%惊艳朋友圈!...

热门文章

  1. 安徽中医药大学计算机科学,安徽中医药大学学子在中国大学生计算机设计大赛国赛中荣获佳绩...
  2. 小明工具箱Excel 插件VSTO 插件
  3. 移植modbus通讯协议232转换485
  4. 基于语法规则生成句子
  5. iOS开发的就业形势怎么样?
  6. CentOS7、红帽rhel8添加阿里云yum源方法
  7. 中国天气网的中央气象台实时数据接口
  8. HDOJ3271_SNIBB
  9. win7局域网计算机 慢,Win7系统网络不稳定时快时慢如何解决?
  10. TIPS001:Mendeley下载全文及其命令逻辑