中级会员
 
- 积分
- 388
- 金钱
- 388
- 注册时间
- 2012-12-17
- 在线时间
- 62 小时
|
50金钱
本帖最后由 czz88 于 2016-11-8 09:42 编辑
单片机型号是STM32F103VCT6 串口1当做打印调试信息的,串口2接SIM800C模块,串口3接Zigbee
当串口2接收到服务器远程指令会触发串口三发送一组数据给ZigBee,现在的问题是单片机串口3发送的数据偶尔会出错
图片是串口3接串口调试助手收到的数据,一行代表一组正常数据数据有时候是丢失数据前面一部分和后面一部分,有时候丢失数据后面一部分,不固定
[mw_shl_code=c,true]//发送转义函数
u8 SendChange_FFFE(u8* fmt)
{
u8 i,j,k;
//u8 size;
i=22-1; //包尾0xFF不需要转义
k=1; //返回值,代表转义完串口发送数据的长度
for(j=2;j<i;j++)
{
k++;
if(fmt[j]>=0xFE)
{
U3_SendData[k]=0xFE;
k++;
U3_SendData[k]=fmt[j]-2;
}
else
{
U3_SendData[k]=fmt[j];
}
}
U3_SendData[0]=0xFE;
U3_SendData[1]=0x13;
U3_SendData[k+1]=0xFF;
return k+1;
}
void u3_Send(u8* fmt)
{
u16 i,j;
//i=size;
i=SendChange_FFFE((u8*) fmt);
for(j=0;j<=i;j++) //循环发送数据
{
while((USART3->SR&0X40)==0); //循环发送,直到发送完毕
USART3->DR=U3_SendData[j];
}
}
[/mw_shl_code]
|
|