0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread浮点数打印的问题及其解决办法

冬至子 来源:初级踩坑仔 作者:初级踩坑仔 2023-08-02 15:03 次阅读

(目前master分支已无该问题,RT_ALIGN_SIZE默认为8了)主要讲讲MounRiver Studio下的浮点打印(RTT Studio)问题,RT-Thread Studio的话我没试过,不过论坛里的一些vsnprintf替换rt_vsnprintf应该是不可行的(gcc下 ch32v会抛出线程错误,其它的keil或许可以,不过没试过)。

MounRiver Studio比较特殊,网上的方法都不行,要么浮点打印失败,要么引发rtthread错误,中间试了很多方法,涉及到一些编译器C库之类的,过程就不赘述了,

直接说结论和方法

MounRiver Studio裸机开发ch32想printf浮点的话(ch32官方已经为我们实现了printf重定向,如果其它芯片比如stm32就要自己重定向一下),需要勾选一个选项,如图:

1.jpg

rt_kprintf打印浮点需要一个补丁包rt_vsnprintf_full

浮点问题解决了,大佬回复很快啊(这里感谢大佬@mysterywolf),将rtconfig.h里的字节对齐宏改为8,

#define RT_ALIGN_SIZE 8

之后如果想用printf的,就是要勾选我前面提到的Use wchprintfloat(其它芯片和IDE重定向printf并修改字节对齐)

想用rt_kprintf的,就要添加一个补丁包

rt_vsnprintf_full

那就大功告成了(亲测)

printf和rt_vsnprintf_full补丁包ROM都是8KB,所以不用纠结。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ROM
    ROM
    +关注

    关注

    4

    文章

    525

    浏览量

    84865
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348964
  • RT-Thread
    +关注

    关注

    31

    文章

    1151

    浏览量

    38936
  • 裸机
    +关注

    关注

    0

    文章

    37

    浏览量

    6158
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3238
收藏 人收藏

    评论

    相关推荐

    CH32调用printf无法打印浮点数是什么问题?

    如题,调用printf %f无法打印浮点数,百度上有说是设置的问题,求解
    发表于 05-17 06:45

    PRINT函数为什么无法打印浮点数

    浮点数无法打印显示出来,有地方可以修改吗?
    发表于 08-10 07:29

    怎样去解决RT-Thread浮点数打印的问题呢

    (目前master分支已无该问题,RT_ALIGN_SIZE默认为8了)主要讲讲MounRiver Studio下的浮点打印(RTT Studio)问题,RT-Thread Studi
    发表于 02-07 11:49

    rt-thread-studio不支持printf打印浮点数要怎么添加编译选项?

    rt-thread-studio不支持printf打印浮点数,是否可以添加编译选择支持打印浮点,要怎么添加编译选项
    发表于 09-07 16:42

    浮点数的表示方法

    浮点数的表示方法  浮点数,是指小数点在数据中的位置可以左右移动的数据。它通常被表示成:    N = M* RE  这里的M(Mantissa)被称为浮点数
    发表于 10-13 17:13 1.6w次阅读
    <b class='flag-5'>浮点数</b>的表示方法

    FLASH存储浮点数据的解决办法

    需求: 参数的数据类型为浮点数据,需要存储至FLASH中。解决办法:采用联合体联合体特性:联合体内的参数,共用一块内存。案例://构建联合体数据结构typedef union{ float
    发表于 12-02 12:21 6次下载
    FLASH存储<b class='flag-5'>浮点数</b>据的<b class='flag-5'>解决办法</b>

    谈一谈浮点数的精度问题

    还是要从浮点数的存储和标识出发来处理该问题,既然浮点数天然就存在一定的误差,而有时候计算又无法获得唯一的数值,如下图所示,浮点数计算出来的实轴上的值都会因为浮点数无法存储标识而近似到其
    的头像 发表于 08-11 14:28 3434次阅读
    谈一谈<b class='flag-5'>浮点数</b>的精度问题

    什么是浮点数浮点数在内存中的存储

    浮点型简单讲就是实数的意思。浮点数在计算机中用以近似表示任意某个实数。
    的头像 发表于 11-09 11:07 3709次阅读
    什么是<b class='flag-5'>浮点数</b>?<b class='flag-5'>浮点数</b>在内存中的存储

    RT-Thread文档_RT-Thread 简介

    RT-Thread文档_RT-Thread 简介
    发表于 02-22 18:22 5次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 简介

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 7次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP 介绍与移植

    什么是浮点数

    Python数据类型第一种:字符串(str)。 Python数据类型第二种:整数(int)。 Python数据类型第三种:浮点数浮点数的英文名是float,浮点数没有简写。
    的头像 发表于 02-23 14:58 3771次阅读

    单精度和双精度浮点数的区别

    在计算机科学和数值计算中,浮点数是一种用于表示实数的数据类型。浮点数有两种精度级别:单精度和双精度。这两种精度级别在表示范围、精度和存储空间等方面都有所不同。本文将详细介绍单精度和双精度浮点数的区别
    的头像 发表于 12-13 10:55 1555次阅读

    单精度和双精度浮点数的区别

    单精度和双精度是计算机中表示浮点数的两种不同的精度。在计算机中,浮点数用来表示带有小数部分的实数,而单精度和双精度用来表示浮点数的精确程度不同。在以下文章中,我将详细介绍单精度和双精度浮点数
    的头像 发表于 12-15 10:25 2654次阅读

    modbus浮点数怎么读取

    Modbus是一种通信协议,常用于工业自动化系统中的设备之间的通信。它支持多种数据类型,包括整数、浮点数、字符串等。浮点数在工业领域中广泛应用,因此了解如何读取和处理Modbus浮点数是非
    的头像 发表于 12-28 14:38 1776次阅读

    一文带你秒懂IEEE 754浮点数

    一、简介1、常见的浮点数表示方式是IEEE754标准,它规定了浮点数的存储格式和运算规则,这个标准定义了两种浮点数表示:单精度和双精度。2、任何一个浮点数的二进制数可以写为:NUM
    的头像 发表于 03-18 08:09 984次阅读
    一文带你秒懂IEEE 754<b class='flag-5'>浮点数</b>