嵌入式硬件通信接口协议-UART(三)快速使用串口及应用
2. ANSI C标准中有几个标准预定义宏:
__LINE__:源代码中的行号(字符串形式)
__FILE__:当前*.c源码文件的文件名(字符串形式)
__DATE__:编译日期(字符串形式)
__TIME__:编译时间(字符串形式)
__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;
__cplusplus:当编写C++程序时该标识符被定义。
有了上一步实现printf函数的重定向到串口后,基本就可以完美使用串口进行调试程序。
调试过程中可利用ANSIC标准中的内置宏,比如__LINE__可以很方便跟踪代码执行到哪一行。
四、调试-输入
串口的接收,有轮询、中断、DMA等方式。
轮询方式,特点是消耗芯片资源,否则容易丢数据;
中断方式,特点是响应快、资源占用低;
DMA方式,各个芯片的配置不同而无法每款芯片都有该功能,所以代码兼容性可移植性较差。
一般地,对输入的数据进行分析判断时,如果是轮询的方式,则直接在收到后即判断;中断和DMA方式,都可以考虑存到buffer后再分析处理。
五、初见数据协议解析
如果是简单几个字符的指令,可以用上述那样简单判断,但是在稍微中等级别的工程项目中,用那样的方式都已经很不便于处理和扩展了。
比如有一串数据,并且长度不确定,将会超过10个字节、20个字节、100个字节甚至更多,那么这时候就必须使用协议解析的方式。
通常的,数据协议都会有协议头、长度、校验、数据内容等部分组成,数据将以包的形式进行收发,这时候使用解析的方式,对数据包进行解析。
这就是广泛使用的“起始式协议”。
实际的产品中有IC/ID读卡器模块的接口协议:
也有使用在PM2.5传感器上的:
这些都属于开发的模块产品,对外使用串口通信,并且数据协议采样了“起始式”的帧结构模式。
更多关于“起始式协议”的设计和应用,期待下回分解~!
★★★★★推荐文章:
《快速开发MQTT(一)电子工程师眼中的MQTT》
《快速开发MQTT(二)初识MQTT》
《MQTT客户端搭建-最清晰的MQTT协议架构》
《MQTT服务端搭建-最快方式验证自己开发的客户端》
★★★★★相关文章
《嵌入式硬件通信接口协议-UART(一)协议基础》
《嵌入式硬件通信接口协议-UART(二)不同电气规范下的标准》
图片新闻
最新活动更多
-
即日-11.13立即报名>>> 【在线会议】多物理场仿真助跑新能源汽车
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
11月29日立即预约>> 【上海线下】设计,易如反掌—Creo 11发布巡展
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论