嵌入式開發輸出調試和日志信息的幾種方法
瀏覽:2455
1標準庫 printf 直接輸出
額外說明一下,IAR 中使用庫有四個選擇:
int fputc(int ch, FILE *f){DEBUG_SendByte((uint8_t)ch);return ch;}int fgetc(FILE *f){while(USART_GetFlagStatus(DEBUG_COM, USART_FLAG_RXNE) == RESET);return (int)USART_ReceiveData(DEBUG_COM);}
2自定義 printf 輸出
#define DEBUG(Type, ...) if(DEBUG_EN(Type)) \ { \ printf(__VA_ARGS__); \ }
#define DEBUG(Type, ...) if(DEBUG_EN(Type)) \ { \ printf("%s:", GetTimeStr());\ printf(__VA_ARGS__); \ }
3SWO 輸出
4CLI調試輸出信息
命令行相信大家不模式,做嵌入式開發的都知道,像Linux的終端就是一個命令行,只是我們這里說的命令行,相對Linux的終端來說要簡單的多。但是原理類似,都是通過輸入命令來查看數據或執行某個動作。
1.相對printf優勢
通過CLI可以任意時刻查看指定信息,執行某種操作。
2.相對printf劣勢
需要在代碼中集成CLI組件,以及對應的(查看、執行動作等)代碼,更占用資源。(當然,可以使用輕量級的CLI,相對不占資源那種)
比如我之前用的一種,估計占用Flash不到1K的空間:
其實,很多RTOS都集成了CLI組件,想用其實也不是想象中的那么復雜,和移植RTOS差不多,甚至更簡單。
由于時間和篇幅有限,就寫到這里,關于CLI的內容還有很多,后面如果還有時間,爭取多分享一些相關內容。
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
1




















