上位机1通过串口1收到数据存入一片单片机板子STM32芯片的内存中,再将存好的数据通过串口2发送到另一片单片机板子STM32芯片的内存中,最后该存在第二片板子芯片的数据通过串口1发送到上位机2
图1.上位机
串口1函数
/*
Function name:Usart1_Oneget
Description:单字符接受
param:None
retval:接收到的数据
Remarks:
*/
u8 Usart1_Oneget(void)
{
u8 data;
while(!(USART1->SR & (1<<5)));
data=USART1->DR;
return data;
}
/*
Function name: Usart1_Onesend
Description:单字符发送
param:data->待发送数据
retval:None
Remarks:
*/
void Usart1_Onesend(u8 data)
{
while(!(USART1->SR & (1<<7)));
USART1->DR=data;
}
/*
Function name:Usart1_Recv_Str
Description:字符串接收函数
param:data-->接收到的字符串待存放的数组首地址
retval:None
Remarks:
*/
void Usart1_Recv_Str(u8 *data)
{
while(1)
{
*data=Usart1_Oneget();
if(*data=='\n')//结束符不唯一 自定义
{
break;
}
data++;
}
*data='\0';//给发送定义一个结束符
}
/*
Function name:Usart1_Send_Str
Description:字符串发送函数
param:data-->待发送字符串的首地址
retval:None
Remarks:
*/
void Usart1_Send_Str(u8 *data)
{
while(1)
{
Usart1_Onesend(*data);
data++;
if(*data=='\0')//结束符不唯一 自定义
{
break;
}
}
}
串口2函数
u32 usart2_led(void)
{
u8 data2;
while(!(USART2->SR & (1<<5)));//接一个字符
data2=USART2->DR;
while(!(USART2->SR & (1<<7)));
return data2;
}
/*
Function name:Usart1_Oneget
Description:单字符接受
param:None
retval:接收到的数据
Remarks:
*/
u8 Usart2_Oneget(void)
{
u8 data;
while(!(USART2->SR & (1<<5)));
data=USART2->DR;
return data;
}
/*
Function name: Usart1_Onesend
Description:单字符发送
param:data->待发送数据
retval:None
Remarks:
*/
void Usart2_Onesend(u8 data)
{
while(!(USART2->SR & (1<<7)));
USART2->DR=data;
}
/*
Function name:Usart1_Recv_Str
Description:字符串接收函数
param:data-->接收到的字符串待存放的数组首地址
retval:None
Remarks:
*/
void Usart2_Recv_Str(u8 *data)
{
while(1)
{
*data=Usart2_Oneget();
if(*data=='\n')//结束符不唯一 自定义
{
break;
}
data++;
}
*(data+1)='\0';//给发送定义一个结束符
}
/*
Function name:Usart1_Send_Str
Description:字符串发送函数
param:data-->待发送字符串的首地址
retval:None
Remarks:
*/
void Usart2_Send_Str(u8 *data)
{
while(1)
{
Usart2_Onesend(*data);
data++;
if(*data=='\0')//结束符不唯一 自定义
{
break;
}
}
}
主函数
//#define S//屏蔽哪个就是屏蔽对应主函数的部分
//#define R
int main()
{
Usart1_Config(115200);//串口1初始化
Usart2_Config(115200);//串口2初始化
while(1)
{
#ifdef S//发送的板子
u8 data_send=0;
data_send=Usart1_Oneget();
Usart2_Onesend(data_send);
#endif
#ifdef R//接收的板子
u8 data_reve=0;
data_reve=Usart2_Oneget();
Usart1_Onesend(data_reve);
#endif
}
}