×
单片机 > 单片机程序设计 > 详情

STM32 485 调试

发布时间:2020-05-18 发布时间:
|

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

//通过485发送数据
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
RS485_TX_EN=1; //设置控制引脚,来设置成发送模式 
  for(t=0;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{
buf[i]=RS485_RX_BUF[i]; //RS485_RX_BUF[i]此数组为串口接收中断的缓存数组。

*len=RS485_RX_CNT; 
RS485_RX_CNT=0; 
}
}

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

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




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法