在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

硬件簡(jiǎn)單的日志打印方法

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

掃碼添加小助手

加入工程師交流群

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

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

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

目的:

1)方便查找打印日志

2)日志格式規(guī)范

3)可以查看用戶添加信息,文件信息,函數(shù)接口,以及文件所在行號(hào)

4)支持format格式

5)可以支持實(shí)時(shí)時(shí)間

基本知識(shí):

C語(yǔ)言中的__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

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

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

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

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

實(shí)現(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3477

    瀏覽量

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

    關(guān)注

    4

    文章

    245

    瀏覽量

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

    關(guān)注

    0

    文章

    144

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

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

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

    條碼打印機(jī)的打印方

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

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

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

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

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

    考勤/收費(fèi)機(jī)的打印方

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

    視頻打印機(jī)的打印方

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

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

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

    熱敏打印機(jī)的心電圖形快速打印方法

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

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

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

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

    選擇 3D 醫(yī)療打印方法
    的頭像 發(fā)表于 12-29 10:02 ?1131次閱讀
    主站蜘蛛池模板: 色视频色露露永久免费观看 | 国产传媒在线观看视频免费观看 | 成人国产三级在线播放 | 2022欧美高清中文字幕在线看 | 一级片在线免费 | 中文字幕色 | 伊人成伊人成综合网2222 | 天天草狠狠干 | 成年片免费网址网站 | 天堂成人精品视频在线观 | 99热成人精品热久久669 | 亚洲无线码一区在线观看 | 久久久久久天天夜夜天天 | 深夜视频免费在线观看 | 亚洲日本视频在线观看 | 免费午夜网站 | 亚洲人成电影 | 狠狠色噜噜狠狠狠狠2018 | 四月激情网 | 激情六月丁香婷婷 | 97干97吻| 日本免费不卡视频 | 久久综合九色综合欧洲 | 免费在线视频你懂的 | 国产大片免费观看中文字幕 | 国产嫩草影院在线观看 | 亚洲欧美4444kkkk| 日本亚洲欧美国产日韩ay高清 | 久久久午夜毛片免费 | 在线观看免费av网 | 么公的好大好硬好深好爽在线视频 | 欧美性淫爽www视频播放 | 亚洲3级| 午夜免费观看福利片一区二区三区 | 在线观看视频你懂得 | 亚洲欧洲无码一区二区三区 | 色咪网| 欧美天天干| 婷婷六月综合网 | 国产一区二区高清 | 国产亚洲情侣久久精品 |