我想在EASYARM615的UART驱动示例实验基础上,编写一个应用程序,实现以下功能:利用Uart0接收外设模块的数据包,波特率为4800。每个数据包为5个字节,由于要利用数据包内的数据进行波形绘制,必须取得多个连续的数据包。 我利用了驱动库自带的以下函数: 1、串口0初始化函数Uart0Init(); 2、中断接收函数UART0_ISR(); 3、读取数据函数QueueRead(); 4、写数据函数QueueWrite(); 其中特别想提到的是示例中定义的一个全局数组:Uart0_Rec_Queue,我可以观察到其中存储的数据为想要提取的数据。 但是现在的问题是如何获得这些有用的数据,并对这些数据进行处理。用读取数据函数QueueRead(),似乎无法达到效果,因为每次读取数据之后,Uart0_Rec_Queue的内容已经改变,当我再次用这个函数读取时,数据包内各个字节的数据已经错乱!我猜想可能是中断接收函数不断触发了写数据函数QueueWrite(),导致了Uart0_Rec_Queue的值不断变化。(也可能是其它原因吧?请高手指点。。。) 特别急切想知道的是,我如何获得连续的数据包,可以用什么办法,从Uart0_Rec_Queue获得这些值,把它们转存到自己所定义的一个数组中去,这个数组不是动态变化的,可以对其各个元素进行运算? 恳请各位高手能有所指点,这个项目很急,谢谢了!!!
|