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);//清除中断

}

}

时间: 2024-11-07 20:00:53

LPC1788定时器使用的相关文章

Android零基础入门第60节:日历视图CalendarView和定时器Chronometer

原文:Android零基础入门第60节:日历视图CalendarView和定时器Chronometer 上一期学习了AnalogClock.DigitalClock和TextClock时钟组件,本期继续来学习日历视图CalendarView和定时器Chronometer. 一.CalendarView 日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触 摸来滚动日历.如果希望监控该组件的日期改变,则可调用CalendarView的 setOnDateCha

发送短信验证码按钮 定时器

static int i = 29; @property(nonatomic,strong) NSTimer *timmer;//定时器 - (void)sendNumber{ NSLog(@"发送验证码"); self.getTelephoneCodeBtn.enabled = NO; [self.getTelephoneCodeBtn setTitle:@"已发送" forState:UIControlStateDisabled]; [self.getTelep

《TCP/IP具体解释》读书笔记(22章)-TCP的坚持定时器

TCP通过让接收方指明希望从发送方接收的数据字节数(即窗体大小)来进行流量控制. 假设窗体大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗体变为非0为止. ACK的传输并不可靠,也就是说,TCP不正确ACK报文段进行确认,TCP仅仅确认那些包括有数据的ACK报文段. 1.坚持定时器 假设一个场景:假设一个确认丢失了,则两方就有可能由于等待对方而使连接终止,接收方等待接收数据(由于它已经向发送方通告了一个非0的窗体),而发送方在等待同意它继续发送数据的窗体更新.为防止这种死锁情况的发生

javascript-函数和定时器

1.函数自执行 JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined (function(){alert(1);}()); (function(){alert(1);})(); !function(){alert(1);}(); void function(){alert(2);}(); 2.可变参数 js函数无法像C#方法那样重载 下面的代码等于是对a函数重新定义 function a() { alert("无参函数"); } function

&lt;JavaScript&gt; 八. 定时器

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 <script type="text/javascript"> 6 /* 7 定时器 周期性执行JS代码 8 */ 9 10 // --------------------- 方法 ----------------------- 11 /* 12 1. setInterval(code, millisec

JavaScript定时器原理分析

.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text

workman源代码阅读 - 使用信号处理器实现定时器

<?php /** * SIGALRM信号处理器注册成功后,在什么情况下进程会收到该信号呢? * * 在Linux系统下,每个进程都有惟一的一个定时器,该定时器提供了以秒为单位的定时功能.在定时器设置的超时时间到达后,调用alarm的进程将收到SIGALRM信号. */ /** * 启动信号处理器 */ \MySignalClazz::init(); /** * 信号处理器 * @author Administrator * */ class MySignalClazz { /** * Task

关于JS中的定时器!!!

定时器: 周期性定时器 一次性定时器 1. 周期性定时器: 让程序每隔一段时间间隔,反复执行一项任务 何时使用: 只要连续,有规律的持续播放的动画 如何使用: 3件事: 1. ***任务函数: 定时器每次执行的任务 function task(){...} 任务函数通常要自己考虑:*何时停止*定时器的临界值 2. 将任务函数放入定时器,定时执行: timer=setInterval(task,interval) 其中: interval 是间隔的毫秒数 timer往往是一个全局变量: 用来保存当

如何弹出一个窗口气泡(使用定时器向上移动)

原文链接:http://blog.csdn.net/tangaowen/article/details/5108980 如何弹出一个窗口气泡 最近在工作中遇到这样一个需求,就是需要将一个窗口从右下角任务栏下面缓缓的上升到任务栏的上面,现在有很多的软件都有这样的气泡,比如:搜狗输入法的词条更新窗口,还比如CSDN的广告窗口等等. 1.首先 将要弹出的窗口移动到任务栏(当前屏幕)以下 2.然后,获得任务栏(本质是个窗口)的高度,这样就可以知道窗口最终的位置了 3.然后,计算获得窗口最终停止的位置:计