新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2016-8-4
- 在线时间
- 16 小时
|
发表于 2017-2-17 19:39:25
|
显示全部楼层
还有一个问题,也就不开帖了,先发上来,看有人回没
//RS485查询接收到的数据
//buf:接收缓存首地址
//len:读到的数据长度
void RS485_Receive_Data(u8 *buf,u8 *len)
{
u8 rxlen=RS485_RX_CNT;
u8 i=0;
*len=0; //默认为0
delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
{
for(i=0;i<rxlen;i++)
{
buf[i]=RS485_RX_BUF[i];
}
*len=RS485_RX_CNT; //记录本次数据长度
RS485_RX_CNT=0; //清零
}
}
针对这个函数 这一句 delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
这个放到开头是不是会好一点,否则就算在这个时候进入了中断服务函数里,那接受完成后 后面的if条件不就不成立了吗,很奇怪,为什么这里会有一个延时,对于这个if判断条件也不是很懂。 |
|