亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

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

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

硬件簡單的日志打印方法

科技綠洲 ? 來源:zsky ? 作者:zsky ? 2023-06-22 10:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

相信大多數(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

源碼

#define DEBUG_EN (1u)
 
#if (DEBUG_EN)
 
#define DEBUG_MAX_SIZE 512
extern char szBuf[DEBUG_MAX_SIZE];
 
#define DEBUG_INFO( format, ... ) do{\\
    u16 unLen = 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)
 
#define DEBUG_WARN( format, ... ) do{\\
    u16 unLen = 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)
 
#define DEBUG_ERR( format, ... ) do{\\
    u16 unLen = 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 
 
#define DEBUG_INFO(...)
#define DEBUG_WARN(...)
#define DEBUG_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ā)送使用中斷的好處就是高效率,不耽誤其他程序跑。

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

實現(xiàn)效果

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

圖片

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

    關(guān)注

    11

    文章

    3484

    瀏覽量

    67492
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    245

    瀏覽量

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

    關(guān)注

    0

    文章

    144

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Labview實現(xiàn)txt文本文件打印簡單方法

    新手學(xué)NI,為現(xiàn)場做了一個自動記錄到txt的小程序,但要求記錄到一定量時打印該txt文件,網(wǎng)上只有打印VI和打印EXCEL的一些教程,打電話需求NI官方的幫助,得到的解決方法是轉(zhuǎn)化為W
    發(fā)表于 03-19 13:11

    Python日志打印重復(fù)解決方法

    Python日志打印重復(fù)問題
    發(fā)表于 06-12 07:18

    簡單記錄下最近設(shè)計的一種日志打印方法

    仿真,這樣大多數(shù)方法便是加打印信息進行找問題。打印的接口有很多種,比如串口,網(wǎng)絡(luò),顯示等等。簡單硬件開發(fā)串口估計是最常用的。這里
    發(fā)表于 01-11 06:09

    STM32的常規(guī)打印方法

    常規(guī)打印方法 在STM32的應(yīng)用中,我們常常對printf進行重定向的方式來把打印信息printf到我們的串口助手。在...
    發(fā)表于 02-21 06:51

    講講調(diào)試程序的重要方法打印日志

    今天來講講調(diào)試程序的重要方法打印日志。無論開發(fā)何種程序,單片機,手機APP,電腦客戶端,還是服務(wù)器,日志都是最基礎(chǔ)也是最重要的調(diào)試手段。手機APP,電腦客戶端和服務(wù)器的開發(fā)環(huán)境往往提
    發(fā)表于 06-20 17:14

    數(shù)碼印像機打印方

    數(shù)碼印像機打印方式              打印方式實際上就是指數(shù)碼印像機是采用何種打印技術(shù)進行
    發(fā)表于 12-23 14:33 ?956次閱讀

    條碼打印機的打印方

    條碼打印機的打印方式         
    發(fā)表于 12-30 11:44 ?1554次閱讀

    票據(jù)打印機的打印方

    票據(jù)打印機的打印方式              票據(jù)打印機是根據(jù)打印機的主要用途劃分
    發(fā)表于 12-30 13:37 ?1274次閱讀

    票據(jù)打印機的打印方

    票據(jù)打印機的打印方向              打印方向指的是票據(jù)打印機在
    發(fā)表于 12-30 13:55 ?1103次閱讀

    考勤/收費機的打印方

    考勤/收費機的打印方式              就是通常我們所說的根據(jù)打印的原理來劃分出來的針式打印、噴墨
    發(fā)表于 12-30 15:19 ?802次閱讀

    視頻打印機的打印方

    視頻打印機的打印方式              打印方式指的是產(chǎn)品采用的是哪種打印
    發(fā)表于 12-31 10:21 ?1403次閱讀

    基于熱敏打印機的心電圖形快速打印方法的研究及應(yīng)用實例

    基于熱敏打印機的心電圖形快速打印方法的研究及應(yīng)用實例  目前,我國各醫(yī)院普遍使用的心電圖機絕大多數(shù)是機電式的,即通過電極檢測心電信號,放大后直接記錄
    發(fā)表于 02-04 09:57 ?1348次閱讀
    基于熱敏<b class='flag-5'>打印</b>機的心電圖形快速<b class='flag-5'>打印方法</b>的研究及應(yīng)用實例

    熱敏打印機的心電圖形快速打印方法

    12導(dǎo)同步心電圖機為例,介紹以普通52單片機為主控芯片應(yīng)用串行熱敏打印機實現(xiàn)多種方式的心電圖形打印,并重點描述了12導(dǎo)聯(lián)同步打印方式的程序?qū)崿F(xiàn)方案。
    發(fā)表于 12-05 10:03 ?6391次閱讀
    熱敏<b class='flag-5'>打印</b>機的心電圖形快速<b class='flag-5'>打印方法</b>

    關(guān)于一種高效printf打印方

    一種高效printf打印方
    的頭像 發(fā)表于 02-29 16:29 ?3828次閱讀
    關(guān)于一種高效printf<b class='flag-5'>打印方</b>式

    選擇 3D 醫(yī)療打印方法

    選擇 3D 醫(yī)療打印方法
    的頭像 發(fā)表于 12-29 10:02 ?1139次閱讀