中级会员
 
- 积分
- 309
- 金钱
- 309
- 注册时间
- 2016-5-20
- 在线时间
- 45 小时
|

楼主 |
发表于 2016-10-3 22:48:13
|
显示全部楼层
//在接收完成后请的0,也试过放在其他地方清零,但不行
//数据帧接收函数
void RS485_Receive_Data(void)
{
u8 i;
if(USART_GetFlagStatus(USART2,USART_FLAG_IDLE) == SET) //如果总线空闲,则开始接收
{
RCV_Num=RCV_Num_Temp;
if(RCV_Num) LED0=0; //接收指示
delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
if(RCV_Num==RCV_Num_Temp&&RCV_Num)//接收到了数据,且接收完成了
{
for(i=0;i<RCV_Num;i++)
{
RCV_Buffer=RCV_Buffer_Temp;
}
LED0=1;
RCV_Num_Temp=0; //清除数据帧字节长度缓存
USART_ITConfig(USART2,USART_IT_RXNE,DISABLE); //关串口接收中断使能
RS485_TX_EN=1; //设置为发送模式
SEND_Complete_Temp=0;
RCV_Complete_Temp=1;
RCV_Complete=1; //置位接收完成标志
}
}
}
|
|