标签: PIT

  • 9 – 中断:PIT定时中断

    PIT是个非常准的定时中断(相比delay函数来说),说好的1ms触发一次中断就是1ms触发一次。
    PIT是平衡直立车的灵魂,因为角度计算,速度计算,和方向控制都高度依赖于积分,而积分的“单位时间”5ms靠的就是PIT中断。

    PIT中断的配置也很简单。设置好中断时间间隔(这里是1ms),写好中断处理函数,就可以啦。
    要注意的是,中断处理函数要尽可能简单,把复杂的工作留给主循环。

    K60

    这里用野火的底层库,详情请参考《三天入门 Cortex-M4——Kinetis 系列》PIT 定时中断模块。

    初始化

    函数原型
    [cc lang=”C”]
    void pit_init(PITn,u32 cnt);
    [/cc]
    调用示例
    [cc lang=”C”]
    pit_init(PIT0,100000); //初始化 PIT0,定时 100000 个时钟周期
    [/cc]

    中断处理

    中断重定向
    [cc lang=”C”]
    #undef VECTOR_084
    #define VECTOR_084 PIT0_IRQHandler //重新定义 84 号中断为 PIT0_IRQHandler 中断
    extern void PIT0_IRQHandler(); //PIT0 定时中断服务函数
    [/cc]
    中断处理函数
    [cc lang=”C”]
    void PIT0_IRQHandler(void)
    {
    PIT_Flag_Clear(PIT0); //清中断标志位
    // Do sth.
    }
    [/cc]

    (更多…)