刚刚,弄CAN接收,把一个变量弄成static形式
就是将代码
unsig int i = 0;
for (i =0; i <512,i++ ) {
memcpy(,,);
}
改成
static unsig int i = 0;
for (i =0; i <512,i++ ) {
memcpy(,,);
}
分析仪1毫秒发送一次,结果丢了大量的帧。为什么不加static不丢帧?
我的第一反应是我分配内存用mallo是不是出问题了。或者是我变量名弄重复了。
然后发现好像不是这样,观察一下,用了static之后,生成的HEX代码变大了好多。
由于我代码里面的优化级别是0,所以我把代码优化级别弄成3,然后仍然运行上面两个程序作比对。结果效果一样,都是不丢帧。
这样我就弄清楚了。就是static对代码优化程序产生了很大的影响。
这个是第一次见。赶忙记录下来。
还有那个__IO 就是volatile 影响也挺大。对效率有要求的地方要注意了!!