在嵌入式开发中,延时是非常重要的,这是接口协议实现的基础.在51,AVR等8位单片机中,精准延时是比较容易实现的,因为指令的执行时间是比较容易计算的.但在ARM处理器中却没有那么容易计算,因为其指令执行是采用多级(一般为3级,5级)流水线,指令执行时间难以知道.当然如果对其流水线的执行情况很清楚也是可以计算的.因此大多时候都会采用定时器进行延时,这种方法优点是延时较精准,缺点是增大了硬件开销(需要一个定时器)以及可移植性差.如果不在乎一个定时器以及可移植性,这种方法是值得推荐的,后面我将采用一个定时器进行延时,芯片是AT91SAM7S系列处理器.
AT91SAM7S64有一个特殊定时器----周期性间隔定时器,它具有溢出自动归零,二级计数以及溢出中断的特点,以下是实现的代码: