您好!
我需要定时器 A 的两个部分以相同的频率运行(2.5MHz @ CPU 时钟= 120MHz)、但它们之间存在一定的相移。
下面的代码在理论上是所需的、但如果代码发生变化、执行时间可能会有所不同-我怀疑这是由于流水线等原因。
TimerEnable (TIMER0_BASE、TIMER_B);
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
_ nop();
TimerEnable (TIMER0_BASE、TIMER_A);
另一个选项是__delay_cycles 内在函数、该内在函数携带警告:
请注意:周期时序基于0个等待状态。
结果因其他等待状态而异。 为
实现不考虑动态
预测。 对于较大的输出电压、
考虑到流水线清除行为、准确性较低。
-测试时表现相同。
我知道将清空管线的指令"isb"。 您能建议在此实例中如何使用此值、或者以其他方式获得所需延迟、使其与周围代码更改无关吗? 此代码只需要在系统启动时运行一次。
谢谢!
马修