串列埠列印除錯資訊(乾貨)

2021-09-29 01:14:53 字數 2217 閱讀 3142

上**,這裡用到的是hal庫,標準庫改以下函式就行。

#include

intfputc

(int ch, file *f)

;hal_uart_transmit

(&huart1, temp,1,

5);//huart1需要根據實際配置

return ch;

}int

fgetc

(file *f)

因為上面這段**我有經常使用到,所以可以把這段**儲存到keil裡的模板裡,需要用的時候雙擊即可,具體設定如下:

當需要這塊**就可以直接雙擊非常方便。

先上**

#define usart_debug

#ifdef usart_debug

#define user_printf(format, ...) printf(format"\r\n", ##__va_args__)

#define user_info(format, ...) printf(__file__"\t[info]:"format"\r\n", ##__va_args__)

#define user_debug(format, ...) printf(__file__"\t[debug]:"format"\r\n", ##__va_args__)

#define user_error(format, ...) printf(__file__"\t[error]:"format"\r\n", ##__va_args__)

#else

#define user_printf(format, ...)

//空;這幾條函式不起不起作用

#define user_info(format, ...)

#define user_debug(format, ...)

#define user_error(format, ...)

#endif

這塊**的作用:

1、可以結尾自動補充換行符,列印出檔案目錄。

2、用到了條件編譯,當作品完成上交時不希望串列埠列印除錯資訊,可以取消這個巨集定義,這樣這幾條串列埠列印函式就無效了。

#define user_printf(format, ...) 	printf(format"\r\n", ##__va_args__)
簡單理解:__va_args__就是傳遞引數用的,當沒有傳遞引數##就會帶走前面的逗號,是語法完整。

獲取符號鏈結。

將每行符號複製下來

這裡有報錯的地方我們在前面新增乙個反斜槓\

最後效果如下:

具體內容可以看這個嗶哩嗶哩:wut電子科技協會。

2020.3.3

修改

#define usart_debug

#ifdef usart_debug

#define info_printf(format, ...) printf(__file__"\t[info]:"format"\r\n", ##__va_args__)

#define debug_printf(format, ...)

#else

#define info_printf(format, ...)

#define debug_printf(format, ...)

#endif

串列埠列印除錯

產品沒有jtag介面,無法斷點debug,只能串列埠列印來除錯。printf d n line 大多數編譯器支援這樣乙個巨集 line 在編譯中會替換為巨集所在檔案中的行號。printf build date s,n build time s n date time 這兩個巨集會在編譯過程中替換為目...

STM8串列埠列印除錯資訊

static void uart1sendmsg char msg,uint16 t length void myprintfascii char msg void myprintfint8 uint8 t msg,intlength intlength m for n intlength 1 n ...

vc 除錯資訊輸出 列印除錯資訊

1.cdumpcontext 該類沒有基類。這個類支援面向流的診斷輸出,以人能夠閱讀的文字。該類過載了 操作符。afxdump是乙個預宣告的cdumpcontext物件,可以方便使用。該物件只在mfc的debug版中有效。可以將調式資訊輸出到除錯輸出視窗或除錯終端。example for afxdu...