看看效果,一个字节的发送时间从714ns降低到628ns,一帧的数据时间降低到94.16ms。是不是很惊奇,说明在32bit的mcu上,效率最高的内存访问还是32bit的方式,在需要极度时间优化的时候请正确使用。
优化第三步,将变量spidat也定义为32bit:
最终全部代码如下:
<div><div>
</div><div>static void Spi4_WriteByte(uint8_t d)</div><div>{</div><div><span style="white-space:pre"> </span>uint32_t i,spidat;</div><div><span style="white-space:pre"> </span>spidat = d;</div><div><span style="white-space:pre"> </span>for(i=0; i<8; i++)<span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span>{ </div><div><span style="white-space:pre"> </span>LCD0_SPI4_CLK_LOW();</div><div><span style="white-space:pre"> </span>if( (spidat&0x80)!=0 ) </div><div><span style="white-space:pre"> </span>LCD0_SPI4_MOSI_HIGH();</div><div><span style="white-space:pre"> </span>else sudu</div><div><span style="white-space:pre"> </span>LCD0_SPI4_MOSI_LOW();</div><div><span style="white-space:pre"> </span>spidat <<= 1;</div><div><span style="white-space:pre"> </span>LCD0_SPI4_CLK_HIGH();<span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span>}</div><div>}</div></div><div></div>
|