求组 :程序死在for循环里面了(第一次for循环正常出来,第二次就死了)

2019-07-25 11:34发布

用的原子哥的485通讯做测试,第一次读数据正常出来,第二次就死在for循环哪里了(能串口打印第一ok,第二就打印不出,而且进入for循环也不运行for循环里面的代码),
void USART2_Receive_Data(u8 *buf,u8 *len)
{
        u8 rxlen=RS485_RX_CNT;
        u8 i=0;
        *len=0;                               
        delay_ms(10);
        printf("%c",RS485_RX_CNT);
        printf("%c",rxlen);
        if(rxlen==RS485_RX_CNT&&rxlen)
        {
                printf("ok");
                for(i=0;i<rxlen;i++)
                {
                        buf[i]=RS485_RX_BUF[i];       
                }               
                *len=RS485_RX_CNT;       
                printf("ok");
                RS485_RX_CNT=0;               
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
KingCode
1楼-- · 2019-07-25 13:47
xiedonghui258 发表于 2017-11-13 13:11
我想知道,485发送完成,切换为接受模式了没有。。直接一个delay_ms(10);就可以了吗?

测试了 ,数据不是很长10ms刚好,原因是*buf溢出了。
KingCode
2楼-- · 2019-07-25 17:44
        通讯代码
        Text_buff[5]=0x14;
        USART2_Send_Data(Text_buff,7);delay_ms(10);
        USART2_Receive_Data(R_buff,&r_len);
        TEMP_UP[6]=R_buff[7];
        TEMP_UP[7]=R_buff[8];
        delay_ms(50);
KingCode
3楼-- · 2019-07-25 18:28
测试了一下 程序只要跑到这里就必然死掉,与for循环无关
jiki119
4楼-- · 2019-07-25 18:39
 精彩回答 2  元偷偷看……
lvkanger
5楼-- · 2019-07-26 00:26
把i定义成int型看看
xiedonghui258
6楼-- · 2019-07-26 03:13
我想知道,485发送完成,切换为接受模式了没有。。直接一个delay_ms(10);就可以了吗?

一周热门 更多>