色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

串口日志輸出DEBUG文件編寫

技術(shù)讓夢想更偉大 ? 來源:CSDN-沉默的小宇宙 ? 2023-09-21 09:21 ? 次閱讀


相信大多數(shù)嵌入式開發(fā)者都會碰到對程序進行調(diào)試或者查找BUG的情況,常見的兩種方法都是仿真和通過日志進行的。

有條件仿真的是更好,單是在編寫嵌入式軟件程序過程中,并不是所有的硬件都支持仿真或者方便仿真,這樣大多數(shù)方法便是加打印信息進行找問題。

打印的接口有很多種,比如串口,網(wǎng)絡(luò),顯示等等。簡單的硬件開發(fā)串口估計是最常用的。這里簡單記錄下一種日志打印方法。

目的:

1)方便查找打印日志 2)日志格式規(guī)范 3)可以查看用戶添加信息,文件信息,函數(shù)接口,以及文件所在行號 4)支持format格式 5)可以支持實時時間

基本知識:

C語言中的__FILE__、LINE__和__FUNCTION

1、FILE用于指示本行代碼所在源文件的文件名;

2、__LINE__用于指示本行代碼所在源文件中的位置(行數(shù));

3、__FUNCTION__用于指示本行代碼所在函數(shù)(函數(shù)名);

注:

1)"FILE"、"LINE"、"FUNCTION"等均大小寫敏感

2)支持需要添加頭文件#include

源碼

#defineDEBUG_EN(1u)

#if(DEBUG_EN)

#defineDEBUG_MAX_SIZE512
externcharszBuf[DEBUG_MAX_SIZE];

#defineDEBUG_INFO(format,...)do{
u16unLen=0;
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE,"[INFO][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen,format,##__VA_ARGS__);
usart1_send_buf_with_txe((u8*)szBuf,unLen);
}while(0)

#defineDEBUG_WARN(format,...)do{
u16unLen=0;
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE,"[WARN][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen,format,##__VA_ARGS__);
usart1_send_buf_with_txe((u8*)szBuf,unLen);
}while(0)

#defineDEBUG_ERR(format,...)do{
u16unLen=0;
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE,"[ERR][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);
unLen+=snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen,format,##__VA_ARGS__);
usart1_send_buf_with_txe((u8*)szBuf,unLen);
}while(0)

#elif

#defineDEBUG_INFO(...)
#defineDEBUG_WARN(...)
#defineDEBUG_ERR(...)

#endif

源碼主要使用宏定義的方式,為了支持文件、行號,函數(shù)等等,不能使用單獨的函數(shù)進行定義。具體原因可以思考下,不過多贅述。

C文件目前只有一個數(shù)組定義char szBuf[DEBUG_MAX_SIZE];。

為了兼容,INFO,WARN和ERR三個共用一個buf,聲明全局變量更主要的一個原因是使用了串口的中斷發(fā)送函數(shù)usart1_send_buf_with_txe,而不是循環(huán)發(fā)送完成再退出,這里傳輸是進行指針傳遞的,發(fā)送使用中斷的好處就是高效率,不耽誤其他程序跑。

當(dāng)然移植的時候完全可以根據(jù)自己的接口和實現(xiàn)方式進行更換。

實現(xiàn)效果

[INFO][..sourcemain.c][@main][#36]:testStr[111],testInt[111],testHex[0x000015BC]
[WARN][..sourcemain.c][@main][#37]:testStr[111],testInt[111],testHex[0x000015BC]
[ERR][..sourcemain.c][@main][#38]:testStr[111],testInt[111],testHex[0x000015BC]

fcc57a04-5812-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

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

    關(guān)注

    5085

    文章

    19138

    瀏覽量

    305708
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7605

    瀏覽量

    136994
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1555

    瀏覽量

    76584
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3788

    瀏覽量

    81096
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10651

原文標(biāo)題:好用的嵌入式設(shè)備日志輸出模塊 log.h

文章出處:【微信號:技術(shù)讓夢想更偉大,微信公眾號:技術(shù)讓夢想更偉大】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    InDTU300系列產(chǎn)品如何輸出實時日志

    “保存配置”,提示是否重啟時,選擇不重啟。點擊維護~實時日志。 點擊開始接收,稍等幾秒會看到模塊輸出的實時日志,故障復(fù)現(xiàn)后,依次點擊停止接收~導(dǎo)出日志,將
    發(fā)表于 07-25 06:05

    多任務(wù)環(huán)境下串口輸出debug信息的方法是什么?

    樓主的程序是基于freeRTOS的,劃分成了幾個任務(wù)。為了方便調(diào)試,在一些地方增加了一些從串口輸出debug信息的代碼,同時為了方便在編譯時去掉這些代碼,我是用宏定義的方法在頭文件里面
    發(fā)表于 07-20 08:03

    串口彩色波形顯示日志助手 云控日志CloudLog.exe

    FwbConf.h中的配置信息。 5、使用之中有問題或建議可以提Issues或加QQ群857283039。 參考PlatformWindows目錄下的main.c文件,您可以了解如何輸出不同類型的日志
    發(fā)表于 09-06 16:51

    如何編寫dll文件

    如何編寫dll文件:可以用幾種語言來實現(xiàn),如delphi編寫dll,pb編寫dll文件,java 編寫
    發(fā)表于 01-16 10:20 ?8878次閱讀

    Linux日志文件系統(tǒng)解析

    在近代歷史上,日志文件系統(tǒng)被認為十分奇特,主要是處于研究階段。而如今,日志文件系統(tǒng)(ext3)已經(jīng)成為 Linux的缺省文件系統(tǒng)。本文向大家
    發(fā)表于 11-01 15:23 ?0次下載
    Linux<b class='flag-5'>日志</b><b class='flag-5'>文件</b>系統(tǒng)解析

    Oracle核心技術(shù)之控制文件日志文件

    控制文件日志文件是Oracle數(shù)據(jù)庫中儲存信息的重要文件。控制文件用來存放數(shù)據(jù)庫的名字、數(shù)據(jù)文件
    發(fā)表于 03-26 11:03 ?2次下載

    Linux系統(tǒng)日志文件中的JFS文件系統(tǒng)

    嵌入式linux中文站向大家介紹一下JFS文件系統(tǒng)。Linux系統(tǒng)日志文件中的JFS系統(tǒng), JFS 由IBM 公司開發(fā),最初出現(xiàn)在AIX 操作系統(tǒng)之上,它提供了基于日志的字節(jié)級、面向事
    發(fā)表于 05-05 14:10 ?5051次閱讀
    Linux系統(tǒng)<b class='flag-5'>日志</b><b class='flag-5'>文件</b>中的JFS<b class='flag-5'>文件</b>系統(tǒng)

    單片機對日志系統(tǒng)的設(shè)計

    為單片機設(shè)計了一套簡單的日志系統(tǒng),通過日志系統(tǒng)提供的接口可以查看設(shè)備狀態(tài),并進行一些基本的調(diào)試。 日志系統(tǒng)通過串口輸出,所以單片機需要
    發(fā)表于 04-02 14:26 ?5377次閱讀
    單片機對<b class='flag-5'>日志</b>系統(tǒng)的設(shè)計

    文件系統(tǒng)中的日志系統(tǒng)是如何實現(xiàn)的

    日志 本文來聊聊文件系統(tǒng)中的日志系統(tǒng),來看一個簡單的日志系統(tǒng)是如何實現(xiàn)的。本文是接著前面的 xv6 系列,用到的一些前導(dǎo)知識不再說明,沒看的可以先看一下。
    的頭像 發(fā)表于 09-29 11:04 ?2232次閱讀
    <b class='flag-5'>文件</b>系統(tǒng)中的<b class='flag-5'>日志</b>系統(tǒng)是如何實現(xiàn)的

    嵌入式log打印格式輸出技巧

    :[info] main.c : init ok!例:[debug] adc.c : adc_getvalue -> 3.3v參考 Java 日志框架的輸出方式:[ 文件名]
    發(fā)表于 10-20 21:06 ?5次下載
    嵌入式log打印格式<b class='flag-5'>輸出</b>技巧

    Python寫入到日志文件完整代碼

    寫入到日志文件 上面我們說的是將日志打印到控制臺中,但是我們Python代碼寫完并且在運行當(dāng)中后,我們就不可能這樣玩了,所以我們需要將日志保存到一個
    的頭像 發(fā)表于 10-07 11:50 ?1289次閱讀
    Python寫入到<b class='flag-5'>日志</b><b class='flag-5'>文件</b>完整代碼

    Loguru日志記錄器的安裝方式

    這個強大工具的基本使用方法。 Loguru 安裝方式很簡單,打開終端輸入: pip install loguru 即可完成安裝。 1.即開即用 如果你需要輸出 debug 日志到終端,可以這么做
    的頭像 發(fā)表于 10-16 11:35 ?740次閱讀
    Loguru<b class='flag-5'>日志</b>記錄器的安裝方式

    Loguru:一個能徹底解放你的日志記錄器

    這個強大工具的基本使用方法。 Loguru 安裝方式很簡單,打開終端輸入: pip install loguru 即可完成安裝。 1.即開即用 在Loguru中,如果你需要輸出 debug 日志到終端
    的頭像 發(fā)表于 10-30 15:01 ?1182次閱讀
    Loguru:一個能徹底解放你的<b class='flag-5'>日志</b>記錄器

    Loguru :徹底解放你的日志記錄器

    這個強大工具的基本使用方法。 Loguru 安裝方式很簡單,打開終端輸入: pip install loguru 即可完成安裝。 1.即開即用 如果你需要輸出 debug 日志到終端,可以這么做
    的頭像 發(fā)表于 11-01 11:01 ?1182次閱讀
    Loguru :徹底解放你的<b class='flag-5'>日志</b>記錄器

    logcat命令抓取日志方法

    -b main:抓取main緩沖區(qū)的日志; -b system:抓取system緩沖區(qū)的日志; -b crash:抓取crash緩沖區(qū)的日志; -r:每次輸出多大
    的頭像 發(fā)表于 11-23 17:31 ?1214次閱讀
    logcat命令抓取<b class='flag-5'>日志</b>方法
    主站蜘蛛池模板: 穿白丝袜边走边尿白丝袜| a级毛片黄免费a级毛片| 妻子的秘密HD观看| 久久久伊人影院| 国产在线观看www鲁啊鲁免费| 动漫美女被到爽了流| TUBE8最新日本护士| 97亚洲狠狠色综合久久久久| 中文人妻熟妇精品乱又伦| 在线不卡中文字幕| 在线中文字幕| 757一本到午夜宫| 99久久精品久久久| 99久久免费国产精精品| 99国产小视频| TUBE19UP老师学生| 动漫美女被到爽了流| 高清国产免费观看视频在线| 成人精品视频网站| 国产成年人在线观看| 国产精品网红女主播久久久| 国产午夜亚洲精品一区| 国语自产精品一区在线视频观看 | 在线免费观看国产精品| 伊人青青青| 97公开超碰在线视频| WRITEAS塞红酒瓶| 国产AV99激情久久无码天堂| 国产极品白嫩超清在线观看| 国产欧美一区二区精品仙草咪 | 欧美丰满白嫩bbxx| 日本内射精品一区二区视频| 涩涩免费视频软件| 学校女性奴sm训练调教| 亚洲熟妇无码乱子AV电影| 在线亚洲黄色| chinesevideos原创麻豆| 纯肉高H种马艳遇风流多| 国产精品JK白丝AV网站| 精品国产在天天线在线麻豆| 美女被触手注入精子强制受孕漫画|