STM32 485 调试

来源:互联网 发布:2016qq悄悄话破解软件 编辑:程序博客网 时间:2024/06/08 07:40

1、最近由于项目的需要,搞了下485通信。首先是单片机如何控制485收发数据。发数据就是通过串口发送数据(说白了就是串口发送),但是要注意的是485的控制引脚要拉高设置为发送模式:

//通过485发送数据
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
RS485_TX_EN=1;//设置控制引脚,来设置成发送模式
  for(t=0;t<len;t++)
{   
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); 
USART_SendData(USART2,buf[t]);
}  
 
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
 
RS485_TX_EN=0;//在不发送的时候一定要置为接受模式,否则对485硬件有损坏,也会导致数据有错误。
}

//通过串口接受中断来接受数据

void RS485_Receive_Data(u8 *buf,u8 *len)
{
u8 rxlen=RS485_RX_CNT;
u8 i=0;
*len=0;
delay_ms(10);    //这个延时是比较重要的,否则会丢数据,由于485传输的速度是有限的,在接收的时候注意下延时。
if(rxlen==RS485_RX_CNT&&rxlen) //判断数据是否接收完毕
{
for(i=0;i<rxlen;i++)
{
buf[i]=RS485_RX_BUF[i];//RS485_RX_BUF[i]此数组为串口接收中断的缓存数组。
}
*len=RS485_RX_CNT;
RS485_RX_CNT=0;
}
}

2、在调试硬件的时候,485接收和发送的电路应该一样,否则会造成数据传输有问题:比如结尾多0x00,或者丢数据。

3、接收数据的时候要给足够的接收时间,以便数据全部接收完毕。


原创粉丝点击