工具:
單片機(jī):STM32L053R8T6(NUCLEO板)
STM32cube
簡介:STM32與上位機(jī)之間用通信協(xié)議(自己定義)進(jìn)行串口通信。怎么判斷上位機(jī)發(fā)過來的指令是正確的,而不是一串亂碼?怎么從正確的指令中提取出想要的命令代號,從而實現(xiàn)想要的功能?(閑來無事,寫個玩玩,原創(chuàng)!第一次在電路城放代碼~~~)
方法:讀取上位機(jī)發(fā)來的命令,逐位判斷命令的包頭和包尾,如果能對應(yīng)上,則這串指令是正確的,然后從指令中提取想要的數(shù)據(jù)和命令等。舉個栗子:通信協(xié)議是自己定義的,不是modbus協(xié)議等。。如F0 5A 15 15 25 16 09 02 12 14 FF A5 F0(都是16進(jìn)制),F(xiàn)0 5A是包頭,A5 F0是包尾,黑色15是命令代號,中間藍(lán)色是我想發(fā)的數(shù)據(jù),橙色FF是校驗位。只要包頭包尾校驗正確,基本這串指令不會有問題。
main函數(shù):其中main函數(shù)是測試程序,把串口助手發(fā)來的數(shù)據(jù)再上傳回去,目的是看發(fā)送和讀取是否一致。
詳細(xì)過程見工程代碼。