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();

        }

    }

  • 相关阅读:
    css的position:absolute
    css元素的margin,padding
    Python---Flask--04--SQLAlchemy
    Python---Flask--03--Web表单
    Python---Flask--02--模板
    Python---Flask--01
    国外程序员整理的 PHP 资源大全
    PHP7 通过yum安装
    Node的安装和进程管理
    在php中实现Redis的订阅与发布
  • 原文地址:https://www.cnblogs.com/dengxiaojun/p/4338679.html
Copyright © 2011-2022 走看看