車規級MCU開發,不像PC端,包含stdio.h頭文件就可以使用Printf()函數。為了實現PC端Printf()接口功能,需要在MCU端實現Printf()接口的"重定向"。所謂的重定向,就是重新定義Printf()接口函數里調用的與輸出設備相關的函數,eg:使用Printf()接口將MCU中的信息,通過串口或者Ethernet輸出到終端上位機。
所以,如果要實現Printf()接口的重定向,選擇合適的MCU驅動是第一步,本文選擇UART(Universal Asynchronous Receiver-Transmitter)實現Printf()接口的重定向,討論如何實現Printf()接口重定向到UART。
1、UART驅動實現
對于UART驅動的實現,根據芯片類型而定。本文使用TC397,文末給出源碼,不做具體討論。
2、重定向Printf()
重定向Printf()接口,本文重新命名為Debugger_printf(),在Debugger_printf()接口中調用UART驅動發送接口sendUARTMessage(),Debugger_printf()接口代碼示意如下:
(一)頭文件
Debugger_printf()接口中需要包含頭文件,因為在如上代碼中使用到了宏va_list,而宏va_list在頭文件中定義。頭文件并不在工程文件中,而是在Mingw64編譯環境庫中,示意如下:
除了宏va_list之外,使用到的va_start(v,l)、va_end(v)等也在頭文件中。
3、Debugger_printf()使用
完成Debugger_printf()接口重定向以后,即可在程序任意需要輸出信息的位置打印log,之后在串口終端中顯示信息。eg:在main線程中打印信息,代碼示意如下:
輸出的log信息如下所示:
-
mcu
+關注
關注
146文章
17317瀏覽量
352640 -
接口
+關注
關注
33文章
8691瀏覽量
151915 -
uart
+關注
關注
22文章
1243瀏覽量
101768 -
代碼
+關注
關注
30文章
4825瀏覽量
69046 -
Printf
+關注
關注
0文章
83瀏覽量
13732
發布評論請先 登錄
相關推薦
評論