LPC1788--TIMER匹配中断设置--寄存器操作

本文介绍了一种使用LPC1788微控制器进行定时器中断配置的方法,具体展示了如何通过寄存器操作实现定时器匹配中断,并提供了完整的初始化代码及中断服务例程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


简单记录LPC1788定时器匹配中断设置--通过寄存器直接操作


#include "timer_lpc1788.h"
#include "uart_lpc1788.h"


void TIMER0_IRQHandler(void)    //TIMER0中断函数
{
    if(((LPC_TIM0->IR) &(1<<0))==(1<<0))  //匹配中断发生
   {
       UARTSendStr("CLOS\r\n");
   }
   LPC_TIM0->IR |=(1<<0);//清除匹配中断标志位
}


void TIMER0_Init(uint32_t clk, uint32_t howtime)
{
   LPC_SC->PCONP|=(1<<1);//打开TIMER0外设时钟

   LPC_TIM0->CTCR &=(~0x03);//计数控制寄存器
   LPC_TIM0->CTCR |=0x00;//定时器模式
//----PC=PR-----TC++
   LPC_TIM0->TC =0;//定时计数器
   LPC_TIM0->PR =0;//预分频寄存器
   LPC_TIM0->PC =0;//预分频计数器

   LPC_TIM0->TCR |=(1<<1);  //定时器控制寄存器--复位定时器
   LPC_TIM0->TCR &=~(1<<1);   //清除复位

   LPC_TIM0->PR =(clk/1000000-1);//预分频寄存器--系统外设时钟/1000000=1us需要的PC值

   LPC_TIM0->IR=0xFFFFFFFF;   //清除中断
//--------------------
   LPC_TIM0->MR0=howtime;//匹配寄存器---多少个1us将匹配
   LPC_TIM0->MCR &=~(0x07);  //匹配控制寄存器--禁止匹配-复位-停止产生的中断
   LPC_TIM0->MCR |=(1<<0); //允许匹配中断
   LPC_TIM0->MCR |=(1<<1); //允许复位中断--匹配时TC复位-重新计数

   NVIC_SetPriority(TIMER0_IRQn, ((0x01<<3)|0x01));  //设置定时器中断优先级

   NVIC_EnableIRQ(TIMER0_IRQn);   //定时器中断使能

   LPC_TIM0->TCR |=(1<<0);;  //启动定时器
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值