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

    文章

    563

    浏览量

    85724
  • STM32
    +关注

    关注

    2270

    文章

    10890

    浏览量

    355632
  • RT-Thread
    +关注

    关注

    31

    文章

    1284

    浏览量

    40056
  • 裸机
    +关注

    关注

    0

    文章

    39

    浏览量

    6365
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3378
收藏 人收藏

    评论

    相关推荐

    ESP8266_RTOS_SDK如何打印浮点数

    尝试使用 printf 打印浮点数,例如, 浮点数 d = 1.0; printf("d = %f", d); 但它打印出来: d = 此外,sprintf
    发表于 07-09 06:56

    请问如何打印浮点数或双精度变量?

    如何打印浮点数或双精度变量?
    发表于 07-12 08:24

    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>的表示方法

    浮点数常用的编码方法

    浮点数常用的编码方法  前面已经说到,在计算机内,浮点数被表示为如下格式:    通常情况
    发表于 10-13 17:21 4476次阅读
    <b class='flag-5'>浮点数</b>常用的编码方法

    modbus 如何读取浮点数

    本文为大家介绍modbus读取浮点数的两个程序设计。
    发表于 02-08 10:03 1.5w次阅读

    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 4566次阅读
    谈一谈<b class='flag-5'>浮点数</b>的精度问题

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

    浮点型简单讲就是实数的意思。浮点数在计算机中用以近似表示任意某个实数。
    的头像 发表于 11-09 11:07 5307次阅读
    什么是<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 9次下载
    <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 4580次阅读

    modbus浮点数怎么读取

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