用stm32做一个扫描程序,扫描要快,现在写好后速度不够,要提速度,下面这个代码怎么优化?
if(((rg>>1) & 0x01) && (dH1L0 == 1) )
{
if(RGn == 0) RD0_H;
if(RGn == 1) RD1_H;
if(RGn == 2) RD2_H;
if(RGn == 3) RD3_H;
if(RGn == 4) RD4_H;
if(RGn == 5) RD5_H;
if(RGn == 6) RD6_H;
......
if(RGn == 99) RD99_H;
}
如上面代码所示,每次扫描这个代码都要把99个都跑完,每次扫描其中只会一个有效,网上找了下if没有break语句,用return的话后面的代码就没法执行了,现在求助大家,有没有好的办法,
考虑过绑定的问题,但不知道怎么绑语句,
现在想绑变量的方式就不用跑99次了,一次就可以,但不会用
类似 RD##RGn##_H;
大家看下,怎么优化这个语句,其中C语言编译已经使用的速度优化了,系统时钟也开到最高了
如果case不多,只有个位数还行;多了肯定是函数指针数组更高效。
而且switch方式的执行效率变动(越后面的case越慢),而数组的效率固定为常数。
另外你的RDx_H 是什么?
还有编译参数。前几年mips-eld-gcc编译时把我一个case搞丢了。幸亏汇编语言我学得好,查汇编发现丢了个case。
一周热门 更多>