LZ直接问怎么做纯软件延时就行了。
延时的时间主要依赖于一条指令的执行时间(与具体指令和系统时钟有关)
有些编译器提供了方便的函数调用,比如IAR for AVR的__delay_cycles()
没有编译器直接支持的情况下,写汇编模块是比较直观的做法
如果非要用C写,就要实际看看编译的结果了;或者用某些调试平台提供的profiler分析一下函数的实际运行周期数。
如果你这样做只是为了模拟某种硬件接口(比如SPI,I2C),劝你还是换一种方法,直接选用带相关硬件支持的芯片,硬件在时序控制上要比纯软件强得多,不仅精度高,速度快,配合上一定的操作逻辑,还能降低CPU的占用率。 |