RS485发送过程中的问题

2019-07-20 21:48发布

新手刚上路,这么写不知道为什么上位机接收不到。
#include "sys.h"
#include "delay.h"
#include "rs485.h"
#include "led.h"

u8 send_data[] = {"hello !"};

int main(void)
{
        int len;
        len = sizeof(send_data);
       
        delay_init(168);
        led_init();
        RS485_Init(9600);
       
        while(1)
        {
                RS485_Send_Data(send_data,len);
                led0 = !led0;
                delay_ms(1000);
        }
}

除此之外还有一个疑问,就是当我把教学例程里面的lcd_init或者usart_init全注释掉之后,也是不能发送,上位机接收不到。
int main(void)
{
        u8 key;
        u8 i=0,t=0;
        u8 cnt=0;
        u8 rs485buf[5];
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init(168);   
        uart_init(115200);
       
        LED_Init();                                       
//         LCD_Init();                                        //LCD3õê¼»ˉ
        KEY_Init();                                   
        RS485_Init(9600);               
//         POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
//        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
//        LCD_ShowString(30,70,200,16,16,"RS485 TEST");       
//        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
//        LCD_ShowString(30,110,200,16,16,"2014/5/7");       
//        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               
//                                                                           
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY0_PRES)
                {
                        for(i=0;i<5;i++)
                        {
                                rs485buf[i]=cnt+i;
//                                LCD_ShowxNum(30+i*32,190,rs485buf[i],3,16,0X80);       
                        }
                        RS485_Send_Data(rs485buf,5);                                                                  
                }                 
                RS485_Receive_Data(rs485buf,&key);
                if(key)
                {
                        if(key>5)key=5;
                        for(i=0;i<key;i++)LCD_ShowxNum(30+i*32,230,rs485buf[i],3,16,0X80);       
                }
                t++;
                delay_ms(10);
                if(t==20)
                {
                        LED0=!LED0;
                        t=0;
                        cnt++;
//                        LCD_ShowxNum(30+48,150,cnt,3,16,0X80);       
                }                  
        }   
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
FantaSy_
1楼-- · 2019-07-21 01:01
上位机没做好吧!!!
灬卟灬
2楼-- · 2019-07-21 03:42
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 05:52
仿真一下,看看代码到底有没有跑先。
灬卟灬
4楼-- · 2019-07-21 09:32
正点原子 发表于 2016-1-23 18:35
仿真一下,看看代码到底有没有跑先。

跑了,DS0还亮呢
shiqinghai
5楼-- · 2019-07-21 10:21
你的意思是把hello!发送给上位机,也就是发送给电脑端,好像用错代码了吧,用的是485的程序,这个程序实现的是两块板子之间的通信,也就是两个板子之间用SP3485芯片互连,然后MCU与485芯片之间通过串口连接,这整个过程不涉及与PC机的连接啊,你要想把字符串发给上位机,可以用system文件夹下的usart.c的printf函数啊
xuyaqi
6楼-- · 2019-07-21 13:17
RS485_Send_Data(send_data,len);这个函数怎么写的。把整个工程发出来别人才能看明白。

一周热门 更多>