0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RT-Thread浮點(diǎn)數(shù)打印的問(wèn)題及其解決辦法

冬至子 ? 來(lái)源:初級(jí)踩坑仔 ? 作者:初級(jí)踩坑仔 ? 2023-08-02 15:03 ? 次閱讀

(目前master分支已無(wú)該問(wèn)題,RT_ALIGN_SIZE默認(rèn)為8了)主要講講MounRiver Studio下的浮點(diǎn)打?。≧TT Studio)問(wèn)題,RT-Thread Studio的話(huà)我沒(méi)試過(guò),不過(guò)論壇里的一些vsnprintf替換rt_vsnprintf應(yīng)該是不可行的(gcc下 ch32v會(huì)拋出線(xiàn)程錯(cuò)誤,其它的keil或許可以,不過(guò)沒(méi)試過(guò))。

MounRiver Studio比較特殊,網(wǎng)上的方法都不行,要么浮點(diǎn)打印失敗,要么引發(fā)rtthread錯(cuò)誤,中間試了很多方法,涉及到一些編譯器C庫(kù)之類(lèi)的,過(guò)程就不贅述了,

直接說(shuō)結(jié)論和方法

MounRiver Studio裸機(jī)開(kāi)發(fā)ch32想printf浮點(diǎn)的話(huà)(ch32官方已經(jīng)為我們實(shí)現(xiàn)了printf重定向,如果其它芯片比如stm32就要自己重定向一下),需要勾選一個(gè)選項(xiàng),如圖:

1.jpg

rt_kprintf打印浮點(diǎn)需要一個(gè)補(bǔ)丁包rt_vsnprintf_full

浮點(diǎn)問(wèn)題解決了,大佬回復(fù)很快啊(這里感謝大佬@mysterywolf),將rtconfig.h里的字節(jié)對(duì)齊宏改為8,

#define RT_ALIGN_SIZE 8

之后如果想用printf的,就是要勾選我前面提到的Use wchprintfloat(其它芯片和IDE重定向printf并修改字節(jié)對(duì)齊)

想用rt_kprintf的,就要添加一個(gè)補(bǔ)丁包

rt_vsnprintf_full

那就大功告成了(親測(cè))

printf和rt_vsnprintf_full補(bǔ)丁包ROM都是8KB,所以不用糾結(jié)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    575

    瀏覽量

    85862
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356741
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1300

    瀏覽量

    40264
  • 裸機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6403
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3407
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP8266_RTOS_SDK如何打印浮點(diǎn)數(shù)?

    嘗試使用 printf 打印浮點(diǎn)數(shù),例如, 浮點(diǎn)數(shù) d = 1.0; printf("d = %f", d); 但它打印出來(lái): d = 此外,sprintf
    發(fā)表于 07-09 06:56

    請(qǐng)問(wèn)如何打印浮點(diǎn)數(shù)或雙精度變量?

    如何打印浮點(diǎn)數(shù)或雙精度變量?
    發(fā)表于 07-12 08:24

    PRINT函數(shù)為什么無(wú)法打印浮點(diǎn)數(shù)

    浮點(diǎn)數(shù)無(wú)法打印顯示出來(lái),有地方可以修改嗎?
    發(fā)表于 08-10 07:29

    怎樣去解決RT-Thread浮點(diǎn)數(shù)打印的問(wèn)題呢

    (目前master分支已無(wú)該問(wèn)題,RT_ALIGN_SIZE默認(rèn)為8了)主要講講MounRiver Studio下的浮點(diǎn)打印(RTT Studio)問(wèn)題,RT-Thread Studi
    發(fā)表于 02-07 11:49

    rt-thread-studio不支持printf打印浮點(diǎn)數(shù)要怎么添加編譯選項(xiàng)?

    rt-thread-studio不支持printf打印浮點(diǎn)數(shù),是否可以添加編譯選擇支持打印浮點(diǎn),要怎么添加編譯選項(xiàng)
    發(fā)表于 09-07 16:42

    浮點(diǎn)數(shù)的表示方法

    浮點(diǎn)數(shù)的表示方法  浮點(diǎn)數(shù),是指小數(shù)點(diǎn)在數(shù)據(jù)中的位置可以左右移動(dòng)的數(shù)據(jù)。它通常被表示成:    N = M* RE  這里的M(Mantissa)被稱(chēng)為浮點(diǎn)數(shù)
    發(fā)表于 10-13 17:13 ?1.6w次閱讀
    <b class='flag-5'>浮點(diǎn)數(shù)</b>的表示方法

    浮點(diǎn)數(shù)常用的編碼方法

    浮點(diǎn)數(shù)常用的編碼方法  前面已經(jīng)說(shuō)到,在計(jì)算機(jī)內(nèi),浮點(diǎn)數(shù)被表示為如下格式:    通常情況
    發(fā)表于 10-13 17:21 ?4516次閱讀
    <b class='flag-5'>浮點(diǎn)數(shù)</b>常用的編碼方法

    modbus 如何讀取浮點(diǎn)數(shù)

    本文為大家介紹modbus讀取浮點(diǎn)數(shù)的兩個(gè)程序設(shè)計(jì)。
    發(fā)表于 02-08 10:03 ?1.5w次閱讀

    FLASH存儲(chǔ)浮點(diǎn)數(shù)據(jù)的解決辦法

    需求: 參數(shù)的數(shù)據(jù)類(lèi)型為浮點(diǎn)數(shù)據(jù),需要存儲(chǔ)至FLASH中。解決辦法:采用聯(lián)合體聯(lián)合體特性:聯(lián)合體內(nèi)的參數(shù),共用一塊內(nèi)存。案例://構(gòu)建聯(lián)合體數(shù)據(jù)結(jié)構(gòu)typedef union{ float
    發(fā)表于 12-02 12:21 ?6次下載
    FLASH存儲(chǔ)<b class='flag-5'>浮點(diǎn)數(shù)</b>據(jù)的<b class='flag-5'>解決辦法</b>

    談一談浮點(diǎn)數(shù)的精度問(wèn)題

    還是要從浮點(diǎn)數(shù)的存儲(chǔ)和標(biāo)識(shí)出發(fā)來(lái)處理該問(wèn)題,既然浮點(diǎn)數(shù)天然就存在一定的誤差,而有時(shí)候計(jì)算又無(wú)法獲得唯一的數(shù)值,如下圖所示,浮點(diǎn)數(shù)計(jì)算出來(lái)的實(shí)軸上的值都會(huì)因?yàn)?b class='flag-5'>浮點(diǎn)數(shù)無(wú)法存儲(chǔ)標(biāo)識(shí)而近似到其
    的頭像 發(fā)表于 08-11 14:28 ?4660次閱讀
    談一談<b class='flag-5'>浮點(diǎn)數(shù)</b>的精度問(wèn)題

    什么是浮點(diǎn)數(shù)?浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)

    浮點(diǎn)型簡(jiǎn)單講就是實(shí)數(shù)的意思。浮點(diǎn)數(shù)在計(jì)算機(jī)中用以近似表示任意某個(gè)實(shí)數(shù)。
    的頭像 發(fā)表于 11-09 11:07 ?5466次閱讀
    什么是<b class='flag-5'>浮點(diǎn)數(shù)</b>?<b class='flag-5'>浮點(diǎn)數(shù)</b>在內(nèi)存中的存儲(chǔ)

    RT-Thread文檔_RT-Thread 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 簡(jiǎn)介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡(jiǎn)介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    什么是浮點(diǎn)數(shù)

    Python數(shù)據(jù)類(lèi)型第一種:字符串(str)。 Python數(shù)據(jù)類(lèi)型第二種:整數(shù)(int)。 Python數(shù)據(jù)類(lèi)型第三種:浮點(diǎn)數(shù),浮點(diǎn)數(shù)的英文名是float,浮點(diǎn)數(shù)沒(méi)有簡(jiǎn)寫(xiě)。
    的頭像 發(fā)表于 02-23 14:58 ?4675次閱讀

    modbus浮點(diǎn)數(shù)怎么讀取

    Modbus是一種通信協(xié)議,常用于工業(yè)自動(dòng)化系統(tǒng)中的設(shè)備之間的通信。它支持多種數(shù)據(jù)類(lèi)型,包括整數(shù)、浮點(diǎn)數(shù)、字符串等。浮點(diǎn)數(shù)在工業(yè)領(lǐng)域中廣泛應(yīng)用,因此了解如何讀取和處理Modbus浮點(diǎn)數(shù)是非
    的頭像 發(fā)表于 12-28 14:38 ?6545次閱讀