F4的485通信问题

2019-07-20 21:23发布

我想知道原子哥的485实验中lcd的初始化函数和485有没有联系,我看了下,貌似没有,可是我在移植的时候去掉这个初始化就不行,加上就可以通信了。可以接受到,但是不会发送出来,而加上就有发送出的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
夜愿晨城
1楼-- · 2019-07-21 23:18
openedvadmin 发表于 2016-4-25 12:11
你不要去掉初始化,你直接去掉你不用液晶的地方的液晶代码。

不用的话看见它总感觉不舒服
xinxian
2楼-- · 2019-07-22 01:42
你用硬件仿真看看,LCD和485没有干扰的,应该是在某一个地方卡出了,感觉很好查
xuyaqi
3楼-- · 2019-07-22 07:04
 精彩回答 2  元偷偷看……
夜愿晨城
4楼-- · 2019-07-22 12:41
xuyaqi 发表于 2016-4-26 09:50
看来你改的不仅LCD部分,485部分也有改动。开始看原程序能否正常运行,然后少改一些再试,每次都应该有备份 ...

我又试了下原子哥的程序,别的完全不动,就注释掉lcd初始化并且将while(1)这个死循环做以下改动:while(1)
        {
        /*        key=KEY_Scan(0);
                if(key==KEY0_PRES)
                {
                        for(i=0;i<5;i++)
                        {
                                rs485buf=cnt+i;
                                LCD_ShowxNum(30+i*32,190,rs485buf,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,3,16,0X80);       
                                 USART_SendData(USART1,rs485buf);
                }
                t++;
                delay_ms(10);
                if(t==20)
                {
                        LED0=!LED0;
                        t=0;
                        cnt++;
                        LCD_ShowxNum(30+48,150,cnt,3,16,0X80);       
                }        */

   USART_SendData(USART2,'a');
         while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);

        }   
当然此时485是设置为输出的,检测不到输出,但是我把注释掉的lcd加回来就OK
了。
夜愿晨城
5楼-- · 2019-07-22 18:03
 精彩回答 2  元偷偷看……
xinxian
6楼-- · 2019-07-22 21:06
夜愿晨城 发表于 2016-4-27 11:41
我也觉得没有干扰,实际上我都不知道怎么查,感觉他们完全没联系。。。。

你用硬件仿真,全速跑,看看哪里卡主了

一周热门 更多>