现在手上有一个串口模块要开发,比较复杂,
功能:接收各种类型不定长度的 字符串,然后解析做出反馈
字符串基本规格:
单条命令 : CMD(X,Y,'ABC或者中文字符不定长',W);
结束符号: rn
最终串口接收字符串是:
命令+结束符 ======》 CMD(X,Y,'ABC或者中文字符不定长',W); rn
特殊情况1:
有时是几条命令一起过来, 如:
CMD(X,Y,'aaaa',W);CMD(X,Y,'bbb',W);CMD(X,Y,'啊啊啊啊',W); rn
特殊情况2:
发送端是不定时发送,可能突然发送连续两条
CMD(X,Y,'1111',W);
rn CMD(X,Y,'22222',W);rn
问题:
对于以上两种特殊情况,
1. 请问串口设置为中断模式 接收数据 可行么?
2. 串口中断的条件是什么? 比如一条
CMD(X,Y,'ggg',W);
rn ,串口是收到 “C” 第一字符之后 就中断吗? 还是整句接收完才中断?
3. 中断后,串口还接收数据吗? 比如CMD(X,Y,'ggg',W); rn 发送过来,正在中断里面接收数据,此时又来一条,那么串口会不会继续接数据进来?
4.
接收数据时 是在串口中断中边接收 边解析好呢? 还是直接读空串口, 存在buffer, 到主程序 外面进行解析 好呢?
5
. 是否需要 用DMA 方式进行接收?
6
. 接收到数据之后,主程序 需要进行反馈(可能包括一些IO 操作,读取flash 等等),如果在此期间,串口又来数据了,但是不想被接收动作打断同时又能把数据 接过来,等这些反馈动作完成后, 再去分析这些数据(不错过它) 可能吗?如何实现?