找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 796|回复: 12
收起左侧

怎么跳出这个C语言WHILE循环?

[复制链接]
ID:1011004 发表于 2022-3-28 14:36 | 显示全部楼层 |阅读模式
while(strx==NULL)
    {
        Clear_Buffer();
        printf("AT\r\n");
        delay_ms(300);
        strx=strstr((const char*)RxBuffer,(const char*)"OK");//返回OK
    }
这个一直接收不到正确信息,就一直在这里怎么判断是哪里出错了?
回复

使用道具 举报

ID:401564 发表于 2022-3-28 15:04 | 显示全部楼层
可以用break跳出
也可以在判断条件那加条件,比如判断次数或者判断时间
回复

使用道具 举报

ID:121859 发表于 2022-3-28 15:08 | 显示全部楼层
加一个计数变量,比如如果10次读不到正确数据就强退。
回复

使用道具 举报

ID:1011004 发表于 2022-3-28 15:31 | 显示全部楼层
Y_G_G 发表于 2022-3-28 15:04
可以用break跳出
也可以在判断条件那加条件,比如判断次数或者判断时间

大佬,我用的是STM32芯片bc26模块,关于用AT指令初始化设备while(strx==NULL)这种的都是这样,我想知道怎么判断是哪里出错了
回复

使用道具 举报

ID:1013716 发表于 2022-3-28 16:17 | 显示全部楼层
一点拙见
1:strx是否定义char strx*
2:返回的"OK"是否区分大小写
3:调试监视RxBuffer是否有数据
4:能否确认连接是否正常已连接上

回复

使用道具 举报

ID:401564 发表于 2022-3-28 16:18 | 显示全部楼层
叶知叶 发表于 2022-3-28 15:31
大佬,我用的是STM32芯片bc26模块,关于用AT指令初始化设备while(strx==NULL)这种的都是这样,我想知道怎 ...

循环里面不是有300mS的延时吗?
串口初始化10次或者其它次数,不成功就结束操作了,并作出错误的对应操作不就行了
要不然呢?总不能初始化不成功就一直卡在这吧
回复

使用道具 举报

ID:887371 发表于 2022-3-29 09:02 | 显示全部楼层
叶知叶 发表于 2022-3-28 15:31
大佬,我用的是STM32芯片bc26模块,关于用AT指令初始化设备while(strx==NULL)这种的都是这样,我想知道怎 ...

验证模块和电脑通讯功能:
      用串口助手发送"AT"给bc26模块,bc26模块应该应答"OK"字符串。
验证mcu和电脑通讯功能:
      RxBuffer[]中有字符串"OK"就能跳出。
      假如RxBuffer是串口的接收缓存,用串口助手发送"OK"来模拟bc26模块的应答指令。
回复

使用道具 举报

ID:61883 发表于 2022-3-29 09:22 | 显示全部楼层
break;
回复

使用道具 举报

ID:372615 发表于 2022-3-29 13:01 | 显示全部楼层
goto?可以试试
回复

使用道具 举报

ID:1013716 发表于 2022-3-29 13:54 | 显示全部楼层
1.首先排除下连接是否没有问题 ,更换排线。
2.确认串口助手软件的兼容问题,是否可以正常通讯,不能的话使用其他串口助手或者其他版本。
回复

使用道具 举报

ID:1011004 发表于 2022-3-29 15:08 | 显示全部楼层
谢谢各位大佬,目前已解决,是因为串口2没设置好导致
回复

使用道具 举报

ID:1011864 发表于 2022-3-29 16:35 | 显示全部楼层
接收不到消息就对了呀,没有消息是一直在循环里面跳不出来
回复

使用道具 举报

ID:401564 发表于 2022-3-29 22:36 | 显示全部楼层
叶知叶 发表于 2022-3-29 15:08
谢谢各位大佬,目前已解决,是因为串口2没设置好导致

这不是什么串口设置的问题
个人认为,除了主函数的while,程序中其它的都要一个跳出死循环的机制,要么是检测时间,要么是检测次数,或者是看门狗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表