当前位置: 代码迷 >> 单片机 >> 关于串口接收程序的优化。该如何解决
  详细解决方案

关于串口接收程序的优化。该如何解决

热度:101   发布时间:2016-04-28 15:41:29.0
关于串口接收程序的优化。
void UARTInrerrupt(void) interrupt 4
{
  unsigned char ch;
  if(RI)
  {
     RI=0;
     ch=SBUF;
     Buff[count++]=ch;
     count=count%100;          //100为缓冲区大小
  }
  if(TI)
  {
     TI=0;
     busy=0;
  }
}
上面是我一般运用的串口接收中断程序。然后去主程序中或者中断里去写个Judege_SeriesData()解析数据。
各位有什么好的方法,确定缓冲区大小开辟多大才合适呢,如果一次我接收96个字符,多大才合适呢。不会溢出,不会因为过大而影响使单片机工作效率降低呢。
------最佳解决方案--------------------
各位有什么好的方法,确定缓冲区大小开辟多大才合适呢,
//通常,我习惯于采用定长,或者能明确数据长度的通信协议。我不太习惯在MCU里搞可变长数据通信。

如果一次我接收96个字符,多大才合适呢。不会溢出,
//会不会溢出,看你缓冲的取长短。当然,是直接取上限。不超过当然不会溢出。

不会因为过大而影响使单片机工作效率降低呢。
//其实,协议的解析,看着代码行很多,很复杂,但是,由于多是条件的识别和分支,执行效率很高的。一般的应用下,不用太担心解析过程中的效率问题
------其他解决方案--------------------
该回复于2012-09-17 10:58:10被版主删除
------其他解决方案--------------------
最好采用定长数据存储方式 或者最大缓冲区 不要采用变长
------其他解决方案--------------------
该回复于2012-09-18 06:51:35被版主删除
------其他解决方案--------------------
定长 是首选,malloc  更慢
  相关解决方案