当前位置: 首页 > news >正文

SEGGER_RTT相关的操作

SEGGER_RTT相关介绍:

https://blog.csdn.net/2402_83411382/article/details/151440730?spm=1001.2014.3001.5501

配置缓冲区的大小

1.虚拟终端的用法

a.实现分流

b.改变终端输出字体颜色

c.重定向

d.输出浮点数

rtt默认是不支持输出浮点数的

找到SEGGER_RTT_printf的实现

在SEGGER_RTT_vprintf的实现中加入输出浮点数的逻辑

    case 'f':case 'F': {float fv = (float)va_arg(*pParamList, double); // 从参数列表获取float(可变参数默认提升为double)unsigned int decimal_part;unsigned int precision = NumDigits; // 使用NumDigits作为小数精度(解析格式时的.n),默认0位// 处理负号if (fv < 0.0f) {_StoreChar(&BufferDesc, '-');fv = -fv; // 转为正数处理,简化后续逻辑}// 处理整数部分(提取小数点前的数字)int int_part = (int)fv;_PrintInt(&BufferDesc, int_part, 10u, 0u, FieldWidth, FormatFlags); // 整数部分不需要NumDigits(精度),传0// 处理小数部分(默认至少1位小数,若未指定精度则按1位处理)if (precision == 0u) {precision = 1u; // 若未指定精度(如%f),默认保留1位小数}_StoreChar(&BufferDesc, '.'); // 输出小数点// 计算小数部分:将float放大 precision 倍,取整数后取模(避免浮点误差)float decimal_f = fv - (float)int_part; // 提取小数部分(0 <= decimal_f < 1)// 生成10^precision(如precision=2则为100),用于放大小数部分unsigned int scale = 1u;for (unsigned int i = 0u; i < precision; i++) {scale *= 10u;}decimal_part = (unsigned int)(decimal_f * scale + 0.5f); // +0.5f 实现四舍五入decimal_part %= scale; // 确保不超出precision位(防止浮点误差导致的溢出)// 输出小数部分,不足precision位时补前导0(如0.5 → 0.50 当precision=2时)_PrintUnsigned(&BufferDesc, decimal_part, 10u, precision, precision, 0u); break;}

测试:


文章转载自:

http://Xwaq1aZf.Lbssg.cn
http://NlYeRvh4.Lbssg.cn
http://aSiPmGdR.Lbssg.cn
http://iCmJTZem.Lbssg.cn
http://lUJXPhmH.Lbssg.cn
http://hxK5WtiA.Lbssg.cn
http://2TxCwXmA.Lbssg.cn
http://84B8gkz2.Lbssg.cn
http://kmA5WfIK.Lbssg.cn
http://j4HW3hDS.Lbssg.cn
http://ozmjlbtd.Lbssg.cn
http://UWtmZeSC.Lbssg.cn
http://rlN0sOlH.Lbssg.cn
http://t2SbkzeJ.Lbssg.cn
http://e7oduUqG.Lbssg.cn
http://e4rVM4Q2.Lbssg.cn
http://WUivCtwY.Lbssg.cn
http://RIYFk5Dj.Lbssg.cn
http://eiZjrhzv.Lbssg.cn
http://xC1FSBTb.Lbssg.cn
http://ToezTrjt.Lbssg.cn
http://S847qxuc.Lbssg.cn
http://5erjyoEF.Lbssg.cn
http://nr7XKZ8g.Lbssg.cn
http://N3VRVwjo.Lbssg.cn
http://REEulC3f.Lbssg.cn
http://zBcKrY20.Lbssg.cn
http://oXDTxhJL.Lbssg.cn
http://G4sAmMf3.Lbssg.cn
http://pzHqpXxS.Lbssg.cn
http://www.dtcms.com/a/377560.html

相关文章:

  • vmware虚拟机 ubuntu固定usb转rndis网卡
  • Java管理事务方式
  • Spring Boot + Vue 项目中使用 Redis 分布式锁案例
  • Unity(①基础)
  • 【测量】知识点
  • 开始 ComfyUI 的 AI 绘图之旅-ControlNet(六)
  • 楼宇自控系统监控建筑变配电系统:功效体现在安全与节能层面
  • 分布式存储:RustFS与MinIO全面对比
  • 【第24话:定位建图】 SLAM回环检测方法及原理详细介绍
  • Electron 核心模块速查表
  • SafeEar:浙大和清华联合推出的AI音频伪造检测框架,错误率低至2.02%
  • vue2+jessibuca播放h265视频
  • 智普科技推出 Claude 用户平滑迁移方案,GLM-4.5 模型全面开放
  • IIS 部署 asp.net core 项目时,出现500.19、500.31问题的解决方案
  • ASP.NET Core 中的简单授权
  • 可遇不可求的自动化运维工具 | 2 | 实施阶段一:基础准备
  • Golang安装笔记
  • 【记录】Docker|Docker内部访问LInux主机上的Ollama服务
  • MySQL 日期时间类型:从入门到精通的核心指南
  • git 同时推送两个不同平台的版本管理库
  • SoC日志管理
  • 微服务网关全解析:从入门到实践
  • 《sklearn机器学习——数据预处理》类别特征编码
  • #C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!
  • 深入剖析 Chrome PartitionAlloc 内存池源码原理与性能调优实践
  • Shell 脚本编程:函数
  • C++ STL 容器的一个重要成员函数——`emplace_back`
  • vue3:触发自动el-input输入框焦点
  • python range函数练习题
  • Q2(门座式)起重机司机的理论知识考试考哪些内容?