高级会员
积分 895
金钱 895
注册时间 2017-7-28
在线时间 139 小时
60 金钱
我用原子哥给的例程,修改了一下,串口2读485信息,再通过串口1发送至PC,观察结果。发现相同的环境和条件,485传感器读到的数据总是会变动(并且总是在两个值之间变动);改变环境,传感器的值会变化(说明能够读到传感器采集到的数据),但是仍然是在两个值之间选一个跳变。 用串口1观察接收数组的时候发现,出现了乱码,第一个字节后出现了空格,后面就不正常了。不知道哪里错了,求助!!!给出主函数如下: 可能是很小的错误,可是就是检查不出来!!很着急,跪求各位大侠帮忙看看!!!
[mw_shl_code=c,true]#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "rs485.h"
void sendconfig_buff(void);
void read_addr(void);
u8 modbusbuff[8]={0x01,0x03,0x00,0x00,0x00,0x01,0x84,0x0A};
u8 read_buff[4]={0x00,0x20,0x00,0x68};
u32 buff3[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
// rs485buf
int main(void)
{
u8 key;
u8 i=0,t=0,j=0;
u8 cnt=0;
u8 len=7;
u32 rs485buf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏè¼¶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
uart_init(9600); //′®¿ú3õê¼»ˉÎa115200
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
LCD_Init(); //3õê¼»ˉLCD
KEY_Init(); //°′¼ü3õê¼»ˉ
RS485_Init(9600); //3õê¼»ˉRS485
POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
LCD_ShowString(30,130,200,16,16,"KEY0:Send"); //ÏÔê¾ìáê¾DÅÏ¢
POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«
LCD_ShowString(30,150,200,16,16,"Count:"); //ÏÔê¾μ±Ç°¼ÆêyÖμ
LCD_ShowString(30,170,200,16,16,"Send Data:"); //ìáê¾·¢ËíμÄêy¾Y
LCD_ShowString(30,210,200,16,16,"Receive Data:"); //ìáê¾½óêÕμ½μÄêy¾Y
delay_ms(200);
while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)//KEY0°′ÏÂ,·¢Ëíò»′Îêy¾Y
{
LED0=!LED0;
sendconfig_buff();
delay_ms(200);
RS485_Receive_Data(rs485buf,8);
for(j=0;j<8;j++)
{
buff3[j]=rs485buf[j];
LCD_ShowxNum(100,20*j+10,(rs485buf[j]),10,16,0);
USART_SendData(USART1, rs485buf[j]);//Ïò′®¿ú1·¢Ëíêy¾Y
}
}
}
}
void sendconfig_buff(void)
{
RS485_Send_Data(modbusbuff,8);
}
void read_addr(void)
{
RS485_Send_Data(read_buff,4);
}
[/mw_shl_code]
我来回答
传感器接收到的数据
485传感器度读数据协议
代码