1812|0

6587

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

LPC1788--TIMER匹配中断设置--寄存器操作 [复制链接]

简单记录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);;  //启动定时器
}

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表