你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
moyanming2013 发表于 2017-7-27 13:59 1.i是什么类型的?注意最大值越位问题。 2.你这种在for循环里面加if判断Dbg_QMsg数组时,当i为100时就直 ...
kylongmu 发表于 2017-7-27 14:24 1.i是什么类型的?注意最大值越位问题。 uint32_t 2.你这种在for循环里面加if判断Dbg_QMsg数组时,当i为10 ...
moyanming2013 发表于 2017-7-27 14:33 你碰到bug的几率这么高、这么厉害?! 我建议你赶紧改行,这些行业更赚钱!: 1.找bug也能赚钱!谷歌已奖 ...
kylongmu 发表于 2017-7-27 14:41 天气热,技术问题,说的别那么酸爽。 我从51到ti的6678,xilinx,altera,actel,lattice的fpga都做过,mc ...
moyanming2013 发表于 2017-7-27 14:47 你厉害,做了那么多,可是为什么连指针数组和字符数组都分不清呢? 恩,一定是你的笔误造成的! ...
anobodykey 发表于 2017-7-27 16:16 还是楼主代码有问题吧 其中"Hello %d\n\r\0",这段字符串长度是为10的,当i循环到9时,Dbg_QMsg[9]就是'\0' ...
toofree 发表于 2017-7-27 15:43 程序没有问题,你从哪打印输出的,是从串口吗?如果是串口的话,加个延时看看。 附件是一个软仿真的程序, ...
kylongmu 发表于 2017-7-27 21:14 Hello 0\r\n\0 一共是9个非空字符,第9个(从下标0开始)是\0。 所以,在第46行中,当i为9时,就会执行第50 ...
moyanming2013 发表于 2017-7-27 22:25 你根本一直都是在拿一个“意想”出来的例子在讨论!让别人去测试你的“意想”代码,自己却不测时而且实际 ...
kylongmu 发表于 2017-7-27 17:06 谢谢你的测试,我在你代码基础上改了一下,你的代码不会出问题,因为for循环外层调用次数没有达到数组大小 ...
1.i是什么类型的?注意最大值越位问题。
uint32_t
2.你这种在for循环里面加if判断Dbg_QMsg数组时,当i为100时就直接死机了!还是你的代码有问题!
QUEUE_MESSAGE_MAX_SIZE也不知道是多少?!
Dbg_QMsg是用来打印的,每次打印的数据远小于100(看代码),都是0地址开始打印
QUEUE_MESSAGE_MAX_SIZE设置为1000
3.确保其它代码无问题?逻辑实现无问题?
我经常会碰到各种BUG,有的能解决,有的能绕过去,但是这个BUG现象会导致代码行为在运行一段时间后不可预知。-------------------------------------------------------------------
同样代码我用VStudio编译测试,根本没有这个现象。
你碰到bug的几率这么高、这么厉害?!
我建议你赶紧改行,这些行业更赚钱!:
1.找bug也能赚钱!谷歌已奖励了600万美元
http://news.zol.com.cn/566/5668050.html
2.微软BUG奖励计划升级 找BUG最高奖金升至10万美元
http://tech.huanqiu.com/news/2015-08/7212547.html
3.“漏洞之王”一年可以赚多少外快?
http://www.chinaz.com/news/2016/0412/520989.shtml
赚了钱别忘了回来谢我!
天气热,技术问题,说的别那么酸爽。
我从51到ti的6678,xilinx,altera,actel,lattice的fpga都做过,mcu也用了很多系列了。做过的usb,pcie的逻辑核与驱动程序。薪水不用你操心了。
uboot里还有我报告的bug修正,mbed上mpu9250的驱动我是第一个贡献源代码,并提供了绕过芯片IIC接口的BUG方法:
http://developer.mbed.org/users ... ba240c1/MPU9250.cpp
你厉害,做了那么多,可是为什么连指针数组和字符数组都分不清呢?
恩,一定是你的笔误造成的!
说了这个现象不是那个问题引起的,已经更正。你这人喜欢抬扛啊!
程序没有问题,你从哪打印输出的,是从串口吗?如果是串口的话,加个延时看看。
附件是一个软仿真的程序,从uart1打印输出,一切正常。
还是楼主代码有问题吧
其中"Hello %d\n\r\0",这段字符串长度是为10的,当i循环到9时,Dbg_QMsg[9]就是'\0'就会退出for循环了那。
论坛里贴代码有的是不能显示的,都注释说明了,还纠结。
谢谢你的测试,我在你代码基础上改了一下,你的代码不会出问题,因为for循环外层调用次数没有达到数组大小。
我在你代码里面设置了2处printf,理论上都是不应该被执行到的,但神奇的是有一条在被调用一定次数后会执行到。
我只有767的板子,还请你再测试下。
修改后代码,直接贴图了,贴源码会显示乱码。
sprintf是在for前面。
楼主,你难道还无视23楼的回复吗?都这么明显了还不清楚?!
楼主你25楼的代码,第43行Dbg_QMsg里面存放的是
Hello 0\r\n\0
一共是9个非空字符,第9个(从下标0开始)是\0。
所以,在第46行中,当i为9时,就会执行第50行的break,从而从for循环中跳出来。
恩,你一定又是笔误,认为break是跳出的if语句吧?!(或当我没说)
1.sprintf会自动补\0,你不用多此一举在Dbg_QMsg中加个\0。
2.你分别在49行和54行加个断点全速运行下,如果停下可看下汇编以及当前的状态是什么样的?
一共是9个非空字符,第9个(从下标0开始)是\0。
所以,在第46行中,当i为9时,就会执行第50行的break,从而从for循环中跳出来。
恩,你一定又是笔误,认为break是跳出的if语句吧?!(或当我没说)
这里break就是跳出for用的,有用break跳出if的用法吗?
1.sprintf会自动补\0,你不用多此一举在Dbg_QMsg中加个\0。这个自动补\0倒是提醒的好,不过去掉后结果一样。
2.你分别在49行和54行加个断点全速运行下,如果停下可看下汇编以及当前的状态是什么样的?
断点进入错误代码,加了个变量k保存for结构里的j,可以看到j变0了,而k保留了原先的值0x0f
你根本一直都是在拿一个“意想”出来的例子在讨论!让别人去测试你的“意想”代码,自己却不测时而且实际的代码有很多错误自己却不去找找问题所在!这怎么能符合实际的呢?因为你实际的代码中:
你无法能保证你所理解的语法是否是正确的!但是你一直保证了这个是正确的,实际是错误多出(先别错误百出了)!
你也无法保证编写的代码是否是正确的!但是你一直保证了这个是正确的,实际是你的所谓的“笔误”很多(如下述)!
你也无法保证编写的代码逻辑是正确的!但是你一直保证代码逻辑没问题,实际情况你自己琢磨吧。
我先不说你代码逻辑执行是否正确,只一看,476行中的for循环,红框处应该是j而不是i吧?这显然是所谓的笔误,再加上一开始的多个语法错误,整个让人抓狂啊!千万别再说往什么mbed提交了代码,那个只是个代码库,还得多修炼才行,省的...
另外,都实际的工程了,别再用i、j、k这种变量名称了,看看,自己都绕进去了,for循环的退出都无法保证,怎么保证与Dbg_QMsg中的内容判断呢?!
其它的不看了,没什么实质的可讨论的了,费时。
再次验证:
多从自身找问题!!
1.语法问题一堆。
2.逻辑实现并不清晰。
3.仍然不相信自己的代码有问题。
你眼睛很尖啊,我刚为了拷贝变量多申请了2个变量,不过结果是一样的,没什么臆想的代码,你太多心思了,一点代码问题就上纲上线。这个代码是我的项目用的,我犯得着在这臆想代码逗大家玩吗?
那个for循环条件不是关键,因为里面有break跳出。
你能正视关键问题吗?
进不了异常状态,能说明问题了吗?