chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

RT-Thread vsnprintf來替代rt_vsnprintf來打印浮點(diǎn)

冬至子 ? 來源:張世爭(zhēng) ? 作者:張世爭(zhēng) ? 2023-08-01 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

有童鞋說在gcc下,vsnprintf來替代rt_vsnprintf來打印浮點(diǎn)會(huì)引發(fā)死機(jī)

經(jīng)過實(shí)際驗(yàn)證,沒有發(fā)現(xiàn)死機(jī)

但并不建議直接用vsnprintf來替代rt_vsnprintf,打印浮點(diǎn)多半用于調(diào)試,可以獨(dú)立成一個(gè)專門的打印函數(shù)

vsnprintf只是用于把浮點(diǎn)格式化到字符串,只要字符串長(zhǎng)度不溢出,理論上不會(huì)造成死機(jī)

如果發(fā)現(xiàn)死機(jī),需要確認(rèn)打印的環(huán)境,如中斷中,尤其在串口輸出的情況下

測(cè)試?yán)?/p>

RT-Thread Studio arm-none-eabi-gcc 環(huán)境:未發(fā)現(xiàn)死機(jī)現(xiàn)象

Keil MDK5 環(huán)境:未發(fā)現(xiàn)死機(jī)現(xiàn)象

cygwin gcc 環(huán)境:未發(fā)現(xiàn)死機(jī)現(xiàn)象

可以正常的用于浮點(diǎn)數(shù)的調(diào)試打印

/*

Copyright (c) 2006-2018, RT-Thread Development Team

SPDX-License-Identifier: Apache-2.0

Change Logs:

Date Author Notes

2018-11-06 SummerGift change to new framework
/
#include
#include
#include
#include "drv_gpio.h"
/
defined the LED0 pin: PA5 /
#define LED0_PIN GET_PIN(A, 5)
#include
#define DBG_BUFF_MAX_LEN 256
/
debug print : support float double */
int dbg_printf(const char fmt, ...)
{
va_list args;
static char rt_log_buf[DBG_BUFF_MAX_LEN] = { 0 };
va_start(args, fmt);
int length = vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args);
rt_kputs(rt_log_buf);
return length;
}
int main(void)
{
double a = 334455.00123345;
double b = 667788.14234234;
dbg_printf("double a = %lfrn", a);
int count = 1;
/
set LED0 pin mode to output */
rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
while (count++)
{
rt_pin_write(LED0_PIN, PIN_HIGH);
dbg_printf("double a + b = %lfrn", a+b+count);
rt_thread_mdelay(1000);
rt_pin_write(LED0_PIN, PIN_LOW);
rt_thread_mdelay(2000);
}
return RT_EOK;
}
cygwin的測(cè)試

/ vsnprintf example /
include
include
define DBG_BUFF_MAX_LEN 256
/ debug print : support float double /
int dbg_printf(const char *fmt, …)
{
va_list args;
static char rt_log_buf[DBG_BUFF_MAX_LEN] = { 0 };

va_start(args, fmt);
int length = vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args);
printf("%srn", rt_log_buf);
return length;
}

int main ()
{
double a = 123453.0001444;
dbg_printf(“%lf”, a);
return 0;
}

## 輸出效果

```c
msh >
  | /
- RT -     Thread Operating System
 / |      4.1.0 build Feb  3 2022 21:11:28
 2006 - 2022 Copyright by RT-Thread team
double a = 334455.001233
double a + b = 1002245.143576
msh >double a + b = 1002246.143576
double a + b = 1002247.143576
double a + b = 1002248.143576
double a + b = 1002249.143576
double a + b = 1002250.143576
double a + b = 1002251.143576
double a + b = 1002252.143576
double a + b = 1002253.143576
double a + b = 1002254.143576
double a + b = 1002255.143576
double a + b = 1002256.143576
double a + b = 1002257.143576
double a + b = 1002258.143576
double a + b = 1002259.143576
double a + b = 1002260.143576
double a + b = 1002261.143576
cygwin的打?。?$ ./a.exe
123453.000144

小結(jié)

rt_kprintf,采用不依賴標(biāo)準(zhǔn)C庫的方式,主要目的是為了減少ROM(Flash)的占用

如果實(shí)際中需要浮點(diǎn)打?。ㄈ绱蛴〉酱?、打印到文件),可以基于vsnprintf編寫一個(gè)簡(jiǎn)單的全功能格式打印函數(shù)

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

    關(guān)注

    4

    文章

    578

    瀏覽量

    88501
  • 串口輸出
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

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

    關(guān)注

    32

    文章

    1532

    瀏覽量

    44210
  • Flash單片機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

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

    關(guān)注

    0

    文章

    78

    瀏覽量

    3907
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    想在bsp工程打印浮點(diǎn)數(shù),結(jié)果找不到rt_vsnprintf_full軟件包,怎么解決?

    想在bsp工程打印浮點(diǎn)數(shù),結(jié)果找不到rt_vsnprintf_full軟件包 問題復(fù)現(xiàn) 使用env-windows-v2.0.0 執(zhí)行pkgs --upgrade 打開menuconfig找不到
    發(fā)表于 06-13 07:48

    ENV不能添加rt_vsnprintf_full軟件包怎么解決?

    想在bsp工程打印浮點(diǎn)數(shù),結(jié)果找不到rt_vsnprintf_full軟件包 問題復(fù)現(xiàn) 使用env-windows-v2.0.0 執(zhí)行pkgs --upgrade 打開menuconfig找不到
    發(fā)表于 09-24 06:04

    移植 rt_vsnprintf_full.c 替換掉 原來的 rt_vsnprintf 之后 打印后出現(xiàn)死機(jī),什么原因?qū)е碌模?/a>

    : 2.問題: 移植完 rt_vsnprintf_full.c 并 替換掉 原來的 rt_vsnprintf 之后 打印后出現(xiàn) RTT系統(tǒng)線程未進(jìn)入SUSPEND 導(dǎo)致死機(jī) 3.死機(jī)代碼
    發(fā)表于 10-09 06:55

    如何使用RT-Thread kprintf去打印數(shù)字呢

    args){ return __vsnprintf(out_buffer, buf, size, fmt, args);}注釋 kservice.c 中的 rt_vsnprintf重新編譯并運(yùn)行rt_kprintf 和LOG_
    發(fā)表于 04-18 14:56

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

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

    rt_vsnprintf完整功能版本不支持打印某些格式?

    最近在使用rt-thread的插件rt_vsnprintf完整功能版本打印東西時(shí),有些格式無法輸出,輸出顯示為空,如 %-*.s 這個(gè)格式,內(nèi)核中很多這樣的格式輸出,比如rt
    發(fā)表于 03-06 10:20

    rt_vsnprintf函數(shù)內(nèi)部數(shù)組分配為什么不在棧內(nèi)?

    環(huán)境 Rt-thread studio ,at32F437程序中使用了軟件包rt_vsnprintf,使用jlink下載程序后,程序運(yùn)行總會(huì)出現(xiàn)莫名的邏輯故障。 分析鎖定問題后,發(fā)現(xiàn)
    發(fā)表于 08-20 11:45

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國(guó)內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    如何使用xmake工具編譯rt-thread工程

     在最新的 rt-thread 主倉庫,支持使用 xmake 工具編譯 rt-thread 工程。   
    的頭像 發(fā)表于 05-11 15:03 ?2756次閱讀
    如何使用xmake工具<b class='flag-5'>來</b>編譯<b class='flag-5'>rt-thread</b>工程

    RT-Thread全球技術(shù)大會(huì):在RT-Thread中使用棧幀調(diào)試程序

    百問網(wǎng)科技CTO韋東山,在RT-Thread全球技術(shù)大會(huì)大會(huì)中,以在RT-Thread中使用棧幀調(diào)試程序?yàn)橹黝}進(jìn)行了介紹。
    的頭像 發(fā)表于 05-28 09:33 ?2358次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):在<b class='flag-5'>RT-Thread</b>中使用棧幀<b class='flag-5'>來</b>調(diào)試程序

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡(jiǎn)介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?5489次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    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 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?10次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    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 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?5900次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)