共2条
1/1 1 跳转至页
问
我在编PC机和ARM通过串口通讯的程序,调试中遇到了奇怪的问题。
我在ARM中用Uart_Getch()函数接收字符,用PC机发字符0x55和0xaa,ARM中调用两次Uart_Getch()接收,存到数组RvData[]中。
ARM中的程序如下:
RvData[0]=Uart_Getch();
RvData[1]=Uart_Getch();
奇怪的是:
当我分两次把0x55和0xaa填入上位机程序的发送区,点击“发送”按钮发送后,ARM可以正确地收到两个数据。但是,当我把0x55和0xaa一起填入上位机程序的发送区,点击“发送”按钮发送后,ARM只接收到0x55,RvData[1]=Uart_Getch()这句程序还在等待接收中断,说明0xaa没有接收到,就丢失了。
难道Uart_Getch()还没把0x55从接收缓冲保持寄存器中读出,0xaa就传输到了,造成了0xaa的丢失。
另外,我用上位机给单片机发0x55和0xaa,却可以正确收到这两个数据。按理说,ARM和单片机的接收原理都是一样的,都是等待中断的啊。 答 1: re:ARM比51快啊,你的ARM接收不到是由于你在第二个数据没有进来的时候就去读寄存器了 答 2: 看看这个函数的原形或者跟踪一下我通常的做法是直接控制硬件,不用系统提供的这些函数。没出现过这种问题。 答 3: RE:Uart_Getch()的函数原型如下:
char Uart_Getch(void)
{
if(whichUart==0)
{
while(!(rUTRSTAT0 & 0x1)); //Receive data read
return RdURXH0();
}
else
{
while(!(rUTRSTAT1 & 0x1)); //Receive data ready
return rURXH1;
}
}
我觉得这个函数和51不同的是:51的接收中断RI是自己手动清零,而ARM中rUTRSTAT0不是手动清零.
我在Uart_Getch()后加了rUTRSTAT0=rUTRSTAT0&0x0,但是RvData[1]中收到的还不是我想要的0xaa.
我以前用单片机通过串口和ARM通讯,使用Uart_Getch()进行数据接收都没有出过问题,为什么偏偏接收PC机的数据时会出问题啊? 答 4: 又有了新的问题我现在连续发多个0x55,ARM可以正确接收到.但我发其他数据时,却不能全部收到正确的数据.
我在ARM中用Uart_Getch()函数接收字符,用PC机发字符0x55和0xaa,ARM中调用两次Uart_Getch()接收,存到数组RvData[]中。
ARM中的程序如下:
RvData[0]=Uart_Getch();
RvData[1]=Uart_Getch();
奇怪的是:
当我分两次把0x55和0xaa填入上位机程序的发送区,点击“发送”按钮发送后,ARM可以正确地收到两个数据。但是,当我把0x55和0xaa一起填入上位机程序的发送区,点击“发送”按钮发送后,ARM只接收到0x55,RvData[1]=Uart_Getch()这句程序还在等待接收中断,说明0xaa没有接收到,就丢失了。
难道Uart_Getch()还没把0x55从接收缓冲保持寄存器中读出,0xaa就传输到了,造成了0xaa的丢失。
另外,我用上位机给单片机发0x55和0xaa,却可以正确收到这两个数据。按理说,ARM和单片机的接收原理都是一样的,都是等待中断的啊。 答 1: re:ARM比51快啊,你的ARM接收不到是由于你在第二个数据没有进来的时候就去读寄存器了 答 2: 看看这个函数的原形或者跟踪一下我通常的做法是直接控制硬件,不用系统提供的这些函数。没出现过这种问题。 答 3: RE:Uart_Getch()的函数原型如下:
char Uart_Getch(void)
{
if(whichUart==0)
{
while(!(rUTRSTAT0 & 0x1)); //Receive data read
return RdURXH0();
}
else
{
while(!(rUTRSTAT1 & 0x1)); //Receive data ready
return rURXH1;
}
}
我觉得这个函数和51不同的是:51的接收中断RI是自己手动清零,而ARM中rUTRSTAT0不是手动清零.
我在Uart_Getch()后加了rUTRSTAT0=rUTRSTAT0&0x0,但是RvData[1]中收到的还不是我想要的0xaa.
我以前用单片机通过串口和ARM通讯,使用Uart_Getch()进行数据接收都没有出过问题,为什么偏偏接收PC机的数据时会出问题啊? 答 4: 又有了新的问题我现在连续发多个0x55,ARM可以正确接收到.但我发其他数据时,却不能全部收到正确的数据.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |