一 串口介绍
对于串口初始化的流程,我们可以总结为4点:
1、使能串口外设时钟;
2、使能串口外设的GPIO的时钟;
3、配置串口外设GPIO的复用功能;
4、配置串口的参数:波特率、数据位、停止位、校验位、传输方向等;
半主机模式介绍:
半主机模式是ARM标准提出的一个概念和机制,它是一种用于ARM处理器或者模拟器与PC主机之间进行输入输出通信的一种机制。这里的输入输出一般指的就是键盘输入和PC屏幕显示输出。且这个机制运行的环境必须是PC主机在运行一个ARM模拟器或者是PC主机已经和一个ARM处理器通过某种方式有通信连接,比如串口、网口、USB等。比如我们可以使用C库里面的printf()函数和scanf()函数使处理器进行获取PC主机的键盘输入和屏幕显示而不是真的在处理器上连接一个键盘和显示器。
ARM处理器的模拟器使用的是半主机模式,我们无需添加某些头文件或者指令即可使用半主机模式中的一些接口或者命令,比如HLT、SVC、BKPT等。我们要实现的调试串口的驱动,我们希望调用printf函数来让它输出数据。那我们需要重写fputc这个函数才行
关于半主机模式、C库的总结:
二 、环形缓冲区
接收到的数据保存到保存网络接收数据的环形缓冲区netdatabuffer,所以需要我们将这个数据进行两种方式的处理判断,一个是处理命令返回数据,一个是处理网络数据。
关于解析ESP8266发来的网络数据,根据网络数据的格式分了三个阶段:
第一个阶段是尝试解析和获取头部信息【+ipd】
第二个阶段是,在获取到完整的头部信息后,解析发来的数据个数,即len status,接收到“:”冒号表示数据个数的信息已经接收完了,根据ASCII字符的规则我们计算出了长度len
第三个阶段“接收数据阶段”data status 当接收了len个data后,我们就退出网络数据的接收解析,将数据保存到了缓冲区中
如: