标题: XS128使用PIT实现精确延时 [打印本页]

作者: lianyiqun    时间: 2015-7-8 23:04
标题: XS128使用PIT实现精确延时
这是本人的第一篇,写起来估计会有点小小的激动哈!第一次嘛,感觉都很刺激!好了废话少说,下面言归正传。
这几天接触飞思卡尔XS128这款单片机,学了一会儿之后,就感觉比较像STM32F10x系列单片机。在STM32中,我们都用Systic定时器来产生精确延时,但是在XS128中,好像还没有人这样用,因为在网上百度XS128精确延时,都没有答案,今天鄙人破天荒活学活用一次,仿照STM32的精确延时,给XS128也弄一个精确延时,哈哈。
我是使用XS128的PIT定时器的通道3来实现精确延时的。其实也很简单,就是在给函数一个参数赋值给PIT的装载寄存器,通过修改参数的值就可以改变延时的时间。然后在delay函数中用循环一直检测time-out(溢出)标志,当溢出时,就break,然后关闭定时器。萝莉啰嗦的,还没说清楚,哈哈,下面贴出delay函数吧。

void delay_ms(uint temp)   //temp的取值范围0~327之间
{
    PITCFLMT_PITE=0; //关闭PIT定时器
    PITCE_PCE3=0;    //关闭定时器通道3  

    PITMTLD0=240-1;  //8位微定时器初值设定。240分频,在48MHzBusClock 下,为0.2MHz。
    PITLD3=200*temp-1;//16 位定时器初值设定。
    PITINTE_PINTE0=0; //不中断
    PITCE_PCE3=1; //使能定时器通道3
    PITCFLMT_PITE=1;  //PIT定时器使能
    for(;;)
    {
        if(PITTF_PTF3 == 1)
        break;
    }
    PITCFLMT_PITE= 0;   //关闭定时器   
    PITCE_PCE3=0;    //关闭定时器通道3
}

需要说明一点儿的是,这个延时函数最大只能延时327ms,也就是temp的值最大只能取327。如果想延时更长的时间,只能多写几个delay_ms了。







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1