本帖最后由 zjwyczj 于 2013-4-25 18:48 编辑
程序大概是这样
main()
{
init_A();//①
for(i=0;i<8;i++)
{
a(i)=UART_readdata(UART0); ②显示问题,我把a数组的方括号这里写成括号
}
UART_TR(a,8);③
while(1)
{}
} 程序大概是这样
A模块是我的一个设备,初始化发一个信号,然后发回一串8字节的标准的串口数据。9600波特 率,7位数据,一个停止位,偶校验。*/
②/*这里是接受串口数据,其中UART_readdata(UART0)函数具体为
UINT8 UART_readdata(UART_typed *pUART)
{
while(pUART->status & Rx_Ready)=0; //等到可以读接受寄存器标志为1,读取收寄存器的数据
return pUART->rxdata;
}
③这是uart将8字节数据发送出去,即发送到电脑上看。
问题:我通过qt里的signalTab(就相当于逻辑分析仪吧)软件分析A设备引进传输回来的串行数据是正确的。然后我又看uart模块的数据接受寄存器rxdata里的数据,也都是对的。然而我把从rxdata寄存器读取数据存到 a数组里(如②所示),最后a 数组 里的8byte数据就有时候对的,有时候少一个两个,有时候就乱了,有时候不是想要的数据,还有时候死在while里了(没接收到rx_ready信号??可是那信号我还是用signalTab看的,也是很正常的,接收到新的数据就有)。这是咋回事??有没有人有过这方面的经验??????
|