首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-12-24 
关于串口接收程序的优化。void UARTInrerrupt(void) interrupt 4{unsigned char chif(RI){RI0chSBUFBu

关于串口接收程序的优化。
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  更慢

热点排行