打印

串口接收程序优化问题

[复制链接]
1277|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-9-17 17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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个字符,多大才合适呢。不会溢出,不会因为过大而影响使单片机工作效率降低呢。

相关帖子

沙发
baidudz| | 2012-9-17 18:18 | 只看该作者
各位有什么好的方法,确定缓冲区大小开辟多大才合适呢,
//通常,我习惯于采用定长,或者能明确数据长度的通信协议。我不太习惯在MCU里搞可变长数据通信。

使用特权

评论回复
板凳
秋天落叶| | 2012-9-17 18:25 | 只看该作者
最好采用定长数据存储方式 或者最大缓冲区 不要采用变长

使用特权

评论回复
地板
summerlover| | 2012-9-17 22:12 | 只看该作者
缓冲区太小容易让后边的数据冲掉前面的

使用特权

评论回复
5
dfsa| | 2012-9-17 22:59 | 只看该作者
如果一次我接收96个字符,多大才合适呢。不会溢出,
//会不会溢出,看你缓冲的取长短。当然,是直接取上限。不超过当然不会溢出。

不会因为过大而影响使单片机工作效率降低呢。
//其实,协议的解析,看着代码行很多,很复杂,但是,由于多是条件的识别和分支,执行效率很高的。一般的应用下,不用太担心解析过程中的效率问题

使用特权

评论回复
6
sinadz| | 2012-9-18 17:57 | 只看该作者
LS分析的很有道理

使用特权

评论回复
7
yybj| | 2012-9-18 18:07 | 只看该作者
建议采用定长数据存储方式

使用特权

评论回复
8
秋天落叶| | 2012-9-18 18:16 | 只看该作者
应该不会影响单片机的工作效率

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝