zoukankan      html  css  js  c++  java
  • lpc1768的rit使用

    LPC1768在系统滴答定时器和通用定时器之外还引入了一个定时器,叫做重复定时器RIT,该定时器只能用于定时操作,带有一个中断,我个人的感觉,这似乎是为了延时函数设计的一个定时器

    那么使用该定时器时遵循什么流程?

    第一,打开时钟

     

    第二,我们要确定定时器从pclk分频数值,这要靠另外一个寄存器

     

    第三,先关闭定时器

     

    第四 设置寄存器比较值

     

    第五 清空或者屏蔽一些特定的比较屏蔽位

     

    最后打开中断,启动定时器

    #define RIT_INT_POSITION 0

    #define RIT_ENCLR_POSITION  1

    #define RIT_ENBR_POSITION 2

    #define RIT_EN_POSITION  3

     

    void RitInit(u32 count)

    {

        LPC_SC->PCONP |=(1<<16); //打开时钟   sys中四分频 25M

        LPC_RIT->RICTRL &= ~(1<<3);

        LPC_RIT->RICOMPVAL = count;

    //  LPC_RIT->RIMASK = count;

        LPC_RIT->RIMASK = 0x80000000;

        LPC_RIT->RICOUNTER = 0;

        NVIC_EnableIRQ(RIT_IRQn);              /* enable irq in nvic              */

        LPC_RIT->RICTRL = (1<<RIT_INT_POSITION)|(1<<RIT_ENCLR_POSITION)|(1<<RIT_ENBR_POSITION)|(1<<RIT_EN_POSITION);

    }

     

    最后,我们需要在rit的中断函数中响应中断,如下

    void RIT_IRQHandler()

    {

        u8 state = LPC_RIT->RICTRL;

        if(state&0x01)  //有中断发生

        {

            RitStop();

            LPC_RIT->RICOUNTER = 0;

            LPC_RIT->RICTRL |= 0x01;    //清除中断

            RIT_INT_CALLBACK;

            RitStart();

        }

    }

  • 相关阅读:
    两类斯特林数的整理
    SXOI2019游记
    3.13校内测试
    Python Flask 实现移动端应用接口(API)
    CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署
    iOS组件化开发入门 —— 提交自己的私有库
    Runtime ----- 带你上道
    iOS核心动画以及UIView动画的介绍
    GCD中各种队列和任务执行方式的组合
    iOS消息转发机制和使用
  • 原文地址:https://www.cnblogs.com/dengxiaojun/p/4338679.html
Copyright © 2011-2022 走看看