OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9172|回复: 14

谁能帮我分析一下这一小段代码?求助。

[复制链接]

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
发表于 2017-5-2 20:59:40 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 学海无涯xy 于 2017-5-2 21:10 编辑

我的代码一直不停的向串口发送数据,不会跳出死循环是怎么回事?其中u8 buf[8000]。
捕获.PNG

最佳答案

查看完整内容[请看2#楼]

现在终于能跳出来了,我加了个函数f_stat("0:/1.jpg",&finfo);s=finfo.fsize;然后把If语句的判断条件做下修改就行了。总之程序是好了,不过为什么sizeof(buf)>bww一直不能成立我还是感到疑惑,希望以后有知道的大侠能交流交流。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-2 20:59:41 | 显示全部楼层
现在终于能跳出来了,我加了个函数f_stat("0:/1.jpg",&finfo);s=finfo.fsize;然后把If语句的判断条件做下修改就行了。总之程序是好了,不过为什么sizeof(buf)>bww一直不能成立我还是感到疑惑,希望以后有知道的大侠能交流交流。
回复

使用道具 举报

58

主题

6296

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11603
金钱
11603
注册时间
2014-4-1
在线时间
1327 小时
发表于 2017-5-2 21:38:22 | 显示全部楼层

没有细看你说的问题,
倒是发现错误:
往DR送数以后就会启动发送动作,
但这个动作需要消耗时间才能完成。
必须等待,等这个数据真正发出去才能送下一个数。


回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-2 21:47:57 | 显示全部楼层
xuande 发表于 2017-5-2 21:38
没有细看你说的问题,
倒是发现错误:
往DR送数以后就会启动发送动作,

谢谢你的回答,不过这不是我的真正问题所在
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-3 00:44:19 | 显示全部楼层
仿真,看结果。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-5-3 08:59:16 | 显示全部楼层
学海无涯xy 发表于 2017-5-2 21:47
谢谢你的回答,不过这不是我的真正问题所在

问题在J和BWW上.BWW是一个地址.J不是地址.已经明显了吧.
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2017-5-3 09:19:37 | 显示全部楼层
j是什么类型的,能不能加到大于bww。肯定是这个问题,要不这段代码不可能跳不出去。另外,串口发送数据不是那么写的
回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-3 16:32:40 | 显示全部楼层
来俩不甜的 发表于 2017-5-3 09:19
j是什么类型的,能不能加到大于bww。肯定是这个问题,要不这段代码不可能跳不出去。另外,串口发送数据不是 ...

j是u32。我直接用个数字替换bww(while(j<1000)),结果现象和原来一样
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-4-10
在线时间
11 小时
发表于 2017-5-3 16:40:19 | 显示全部楼层
当j大于等于bww跳出while,但还在外面的while里面,里面又把j赋值成0了,所以无限循环
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-5-3 16:45:17 | 显示全部楼层
清终端标志位
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2017-5-3 21:13:16 | 显示全部楼层
用仿真器啊,很好解决啊,先j<10试试,
回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-3 23:27:35 来自手机 | 显示全部楼层
chenqili 发表于 2017-5-3 16:40
当j大于等于bww跳出while,但还在外面的while里面,里面又把j赋值成0了,所以无限循环

外面有个break
回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-3 23:35:36 来自手机 | 显示全部楼层
d1z1y2 发表于 2017-5-3 21:13
用仿真器啊,很好解决啊,先j

我这个程序比较大,仿真时总跑到其他次要程序中去,显示假错误,导致跳不到指定的位置。
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8062
金钱
8062
注册时间
2014-8-13
在线时间
1597 小时
发表于 2017-5-4 01:19:07 | 显示全部楼层
chenqili 发表于 2017-5-3 16:40
当j大于等于bww跳出while,但还在外面的while里面,里面又把j赋值成0了,所以无限循环

这个是正确的原因。第一个while(1)只有在读取文件出错的情况下才会跳出(仅有的一个break)。
回复

使用道具 举报

7

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2017-3-26
在线时间
65 小时
 楼主| 发表于 2017-5-4 10:08:34 | 显示全部楼层
mack13013 发表于 2017-5-4 01:19
这个是正确的原因。第一个while(1)只有在读取文件出错的情况下才会跳出(仅有的一个break)。

在外面的while里,是先判断if语句,然后才会给J=0进入里面的while。我试了下把里面的while(j<bww)去掉,结果还是无限循环。所以根本原因是if语句一直不成立(为什么这样才是问题所在)
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 15:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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