当前位置:首页 > 单片机 > 单片机
[导读] 简单记录LPC1788定时器匹配中断设置--通过寄存器直接操作#include "timer_lpc1788.h"#include "uart_lpc1788.h"void TIMER0_IRQHandler(void) //TIMER0中断函数{ if(((LPC_TIM0->IR) &(1TCR |=(1MR0=

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


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


void TIMER0_IRQHandler(void) //TIMER0中断函数
{
if(((LPC_TIM0->IR) &(1<<0))==(1<<0)) //匹配中断发生
{
UARTSendStr("CLOSrn");
}
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);; //启动定时器
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭