嵌入式硬件通信接口協(xié)議-UART(三)快速使用串口及應用
2. ANSI C標準中有幾個(gè)標準預定義宏:
本文引用地址:http://dyxdggzs.com/article/201812/395787.htm__LINE__:源代碼中的行號(字符串形式)
__FILE__:當前*.c源碼文件的文件名(字符串形式)
__DATE__:編譯日期(字符串形式)
__TIME__:編譯時(shí)間(字符串形式)
__STDC__:當要求程序嚴格遵循ANSI C標準時(shí)該標識被賦值為1;
__cplusplus:當編寫(xiě)C++程序時(shí)該標識符被定義。
有了上一步實(shí)現printf函數的重定向到串口后,基本就可以完美使用串口進(jìn)行調試程序。
調試過(guò)程中可利用ANSIC標準中的內置宏,比如__LINE__可以很方便跟蹤代碼執行到哪一行。

四、調試-輸入
串口的接收,有輪詢(xún)、中斷、DMA等方式。
輪詢(xún)方式,特點(diǎn)是消耗芯片資源,否則容易丟數據;
中斷方式,特點(diǎn)是響應快、資源占用低;
DMA方式,各個(gè)芯片的配置不同而無(wú)法每款芯片都有該功能,所以代碼兼容性可移植性較差。
一般地,對輸入的數據進(jìn)行分析判斷時(shí),如果是輪詢(xún)的方式,則直接在收到后即判斷;中斷和DMA方式,都可以考慮存到buffer后再分析處理。


五、初見(jiàn)數據協(xié)議解析
如果是簡(jiǎn)單幾個(gè)字符的指令,可以用上述那樣簡(jiǎn)單判斷,但是在稍微中等級別的工程項目中,用那樣的方式都已經(jīng)很不便于處理和擴展了。
比如有一串數據,并且長(cháng)度不確定,將會(huì )超過(guò)10個(gè)字節、20個(gè)字節、100個(gè)字節甚至更多,那么這時(shí)候就必須使用協(xié)議解析的方式。
通常的,數據協(xié)議都會(huì )有協(xié)議頭、長(cháng)度、校驗、數據內容等部分組成,數據將以包的形式進(jìn)行收發(fā),這時(shí)候使用解析的方式,對數據包進(jìn)行解析。
這就是廣泛使用的“起始式協(xié)議”。
實(shí)際的產(chǎn)品中有IC/ID讀卡器模塊的接口協(xié)議:

也有使用在PM2.5傳感器上的:

這些都屬于開(kāi)發(fā)的模塊產(chǎn)品,對外使用串口通信,并且數據協(xié)議采樣了“起始式”的幀結構模式。
評論