天天看點

ZigBee TI ZStack CC2530 3.20 序列槽03-printf()函數移植

(配套源碼、軟體、開發闆等資源,可移步部落格同名QQ群/TB店鋪:拿破侖940911)

上一節中,我們實作了基于Z-Stack協定棧的序列槽初始化和序列槽輸出功能。

關于Z-Stack協定棧中的序列槽輸出功能,我們為了列印“hello world !\r\n”,需要用如下代碼來實作:

具體其實是調用了hal_uart.c檔案中的函數HalUARTWrite( ),具體檔案所在位置及函數代碼實作如下圖所示:

ZigBee TI ZStack CC2530 3.20 序列槽03-printf()函數移植

在調用該函數實作序列槽輸出功能時,需要填入3個參數,并且所能實作的輸出功能有限;

此外,如果使用過其他嵌入式平台下的序列槽列印功能,想必都知道有一個名為printf的函數,功能非常豐富,用起來也非常友善!

于是便想到如果可以将printf( )函數移植到我們的Z-Stack協定棧中,一定會給我們帶來極大的便利!

關于printf( )函數的詳細了描述請上自行百度,此處引用2句百度百科中的描述:

(1)printf( )函數是格式化輸出函數, 一般用于向标準輸出裝置按規定格式輸出資訊;

(2)printf( )函數的調用格式為: printf("<格式化字元串>", <參量表>)。

移植步驟(大體與前一節中添加uart0.c和uart0.h實作序列槽基本發送功能類似):

1、參考網上找到的printf( )函數功能代碼,編寫我們本節需要使用的user_printf.c和user_printf.h兩個檔案(具體代碼請到統一下載下傳連結去下載下傳);

函數比較複雜,這邊隻摘出user_printf.c檔案中的一段代碼:

可見,printf( )函數本質上其實還是調用的hal_uart.c檔案中的HalUARTWrite( )來實作序列槽輸出!

2、其餘步驟如:往工程中添加檔案、在調用printf( )函數的C檔案中加入包含user_printf.h頭檔案、在ProjectApp_Init( )中調用等,均與上一節類似;

這裡貼出在ProjectApp_Init( )中調用的代碼(不改動上一節的代碼,僅在後面添加):

3、編譯下載下傳等步驟也與上一節類似,最後看一下序列槽調試助手的接收視窗:

ZigBee TI ZStack CC2530 3.20 序列槽03-printf()函數移植