• LPC1788定时器使用


    #ifndef __TIM_H_

    #define __TIM_H_

     

    #include "common.h"

     

    extern u8 tim1_mr0_flag;

     

    void tim0_ch0_count_int_init(u32 pr,u32 count);//定时器0 通道0 计数模式 中断模式 初始化

     

     

     

     

    #endif

     

     

     

     

     

     

    #include "tim.h"

     

    u8 tim1_mr0_flag = 0;

     

    void tim0_ch0_count_int_init(u32 pr,u32 count)  //定时器0 通道0 计数模式 中断模式 初始化

    {

        //打开TIM0时钟

        LPC_SC->PCONP |= (1<<1);//打开时钟

        LPC_TIM0->TCR |= (1<<1);//复位定时器   因为此处复位了寄存器,所以系统中使用多个定时器通道的时候这一位一定要改

        LPC_TIM0->TCR = 0x00;//禁止定时器 退出复位

        LPC_TIM0->PR = pr;//设置预分频值

        LPC_TIM0->MR0 = count;//预设计数值

        LPC_TIM0->MCR |= (1<<1)|(1<<0);//mr0 匹配时复位 并且中断打开

        LPC_TIM0->CTCR &= ~(3<<0);//工作在计数模式

       

        //此时,需要配置中断

        NVIC_SetPriority(TIMER0_IRQn,NVIC_EncodePriority(PriorityGroup2,TIM0_PreemptPriority,TIM0_SubPriority));

        LPC_TIM0->IR |= (1<<0);//清除中断

        NVIC_ClearPendingIRQ(TIMER0_IRQn);//清除中断

        NVIC_EnableIRQ(TIMER0_IRQn);//打开中断通道

       

        //打开定时器

        LPC_TIM0->TCR |= (1<<0);

    }

     

    void TIMER0_IRQHandler(void)

    {

        if((LPC_TIM0->IR & 0x01))//如果是通道1发生中断

        {

            LPC_TIM0->IR |= (1<<0);//清除中断

            NVIC_ClearPendingIRQ(TIMER0_IRQn);//清除中断

            tim1_mr0_flag = 1;

        }

        else

        {

            //现在还没做其他的通道的中断

            LPC_TIM0->IR = 0xff;//清除中断

            NVIC_ClearPendingIRQ(TIMER0_IRQn);//清除中断

        }

    }

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    HTML5基础知识(1)--上标和下标文本
    jQuery基础--样式篇(5)
    jQuery基础--样式篇(4)
    jQuery基础--样式篇(3)
    jQuery基础--样式篇(2)
    jQuery基础--样式篇(1)
    使用D3绘制图表(7)--饼状图
    使用D3绘制图表(6)--竖直柱状图表
    安装Centos 7 错误解决
    linux下搭建LAMP
  • 原文地址:https://www.cnblogs.com/dengxiaojun/p/4338713.html
Copyright © 2020-2023  润新知