历史上的今天
今天是:2025年08月13日(星期三)
2018年08月13日 | STM32 485 调试
2018-08-13 来源:eefocus
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 485串口数据的收发
下一篇:STM32F1的5个串口使用方法
史海拾趣
|
wince5.0自己定制的系统,使用PXA270内核CPU,之前选择的MapX Mobile无法再该系统上安装,请介绍下大家平时在Wince系统上都用什么软件开发地图数据。 … 查看全部问答> |
|
哪位高手能解决?小弟nfs挂载有问题 mount: wrong fs type, bad option, bad superblock on 192.168.66.206:/hh123 missing codepage or other error In some cases useful info is found ...… 查看全部问答> |
|
在只读存储器上存了一个数组, 底层设置好了的,定义了一个特定类型的数据,这个类型的数据就是放在只读存储器上的,可是看不到放置的具体地址 在掉电后,再次上电时,怎样再次读到掉电前存的这个数组里的数据呢? 虽然它存在那,可是我不知道它 ...… 查看全部问答> |
|
Wince界面怎么响应触摸笔划动的操作?怎么做出像IPHONE/M8那样的划屏动态界面效果! Wince界面怎么响应触摸笔划动的操作?怎么做出像IPHONE/M8那样的划屏动态界面效果!… 查看全部问答> |
|
我是学电子和计算机结合的,毕业设计老师要求做与硬件有关的,可我对JAVA比较感兴趣,特别是JAVA web开发的.java有没有与硬件相关的,有知道的请提点意见?谢谢了!用一点点什么芯片的就行。 … 查看全部问答> |




