Keil中串列埠列印函式重定義snprintf()
阿新 • • 發佈:2020-08-22
#ifndef _DEBUG_H__ #define _DEBUG_H__ #include "stdio.h" #include "usart.h" //#define DEBUG_PRINTF //如果不需要串列埠列印資訊,將此巨集開啟 // debug(...)中的'...'內容用__VA_ARGS__或##__VA_ARGS__替代 ,__VA_ARGS__和##__VA_ARGS__兩種寫法都可以 // C語言中以 ; 作為語句的結束,不以行為單位結束,當一行的內容太長不方便解除安裝一行時可使用反斜 槓"\"作為繼續符 // 注意巨集定義的中的語句,換行要加反斜槓'\'繼續符,表示上一語句緊挨著下條語句,// 且反斜槓後面不要有任何註釋語句甚至空格,反斜槓前可以有空格 // 注意每條語句後面都新增反斜槓'\',否則會報錯 #ifndef DEBUG_PRINTF #define debug(...) {\ int len = 0;\ len = snprintf(debug_buf, 128, ##__VA_ARGS__); \ if(len > 0)\ {\ HAL_UART_Transmit_DMA(&huart2, (uint8_t *)debug_buf, len);\ }\ }//到此不用加反斜槓 #else #define debug(...) {\ snprintf(debug_buf, 128, __VA_ARGS__);\ } #endif #endif //_DEBUG_H__