msp430f5310定时器的认识
2016-05-31 09:08
441 查看
a、有两种类型的定时器:Timer_A和Timer_B,其中Timer_A中又有3个同类型的定时器,TimerA0、TimerA1和TimerA2,也就是说5310能够提供给你4个定时器进行单独配置使用。
b、每一个计数器中有两个中断向量,一个专门为ccr0分配的中断向量,另一个为公用中断向量。因为ccr0用于控制计数周期,也就是每当TA0R计数到TA0CCR0所设定的数值后就会清0,并且拥有最高的中断优先级。
c、需要注意的是在增加计数模式时ccr1和ccr2的值应该小于ccr0,否则ccr1和ccr2不会产生中断,并且每次ccr1和ccr2中断后要把它重新赋值,这样才能保证ccr1和ccr2的中断时间间隔不变。
下面是两个中断函数,一个专用中断向量,一个为公用中断向量:
!!!中断中最需要注意的是:一旦某一个比较器开了中断使能,必须要有对应的中断处理程序,否则程序会跑飞!!!
b、每一个计数器中有两个中断向量,一个专门为ccr0分配的中断向量,另一个为公用中断向量。因为ccr0用于控制计数周期,也就是每当TA0R计数到TA0CCR0所设定的数值后就会清0,并且拥有最高的中断优先级。
c、需要注意的是在增加计数模式时ccr1和ccr2的值应该小于ccr0,否则ccr1和ccr2不会产生中断,并且每次ccr1和ccr2中断后要把它重新赋值,这样才能保证ccr1和ccr2的中断时间间隔不变。
TA0CCR0 = 8000; //TA0CCR0 是16位寄存器,最高65535(切记),ccr0必须最大,因为一旦计数到ccr0,TA0R便立刻清0,用于控制周期没8000单位时间就会触发一次 TA0CCR1 = 4000; // 当TA0R计数到4000时,不会清0, TA0CCR2 = 1000; // 当TA0R计数到1000时,不会清0,
下面是两个中断函数,一个专用中断向量,一个为公用中断向量:
!!!中断中最需要注意的是:一旦某一个比较器开了中断使能,必须要有对应的中断处理程序,否则程序会跑飞!!!
/ Timer0 A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR //CCR0的中断向量 __interrupt void Timer_A0 (void) { //中断处理,当计数器TA0R计数到CCR0的时候会触发这个中断函数 } #pragma vector=TIMER0_A1_VECTOR //公用中断向量 __interrupt void TIMER0_A1_ISR(void) { switch(TA0IV) { case CCIFG1: //中断处理函数 //计数至CCR1触发 break; case CCIFG2: //计数至CCR2触发 break; case CCIFG3: break; // CCR3 not used case 8: break; // CCR4 not used case 10: break; // CCR5 not used case 12: break; // Reserved not used case 14: break; // 溢出触发 default: break; } }
相关文章推荐
- Mootools 1.2教程 定时器和哈希简介
- C#定时器和随机数
- C#中timer定时器用法实例
- JS中自定义定时器让它在某一时刻执行
- 理解javascript定时器中的setTimeout与setInterval
- JavaScript定时器详解及实例
- 基于jQuery实现的扇形定时器附源码下载
- jQuery基础的工厂函数以及定时器的经典实例分析
- 跟我学习javascript的定时器
- Qt定时器和随机数详解
- asp.net中Timer无刷新定时器的实现方法
- 解析Java中的定时器及使用定时器制作弹弹球游戏的示例
- libevent库的使用--定时器的使用实例
- MySQL定时器EVENT学习笔记
- js函数定时器实现定时读取系统实时连接数
- linux使用select实现精确定时器详解
- Cocos2d-x Schedule定时器的使用实例
- VC定时器的用法实例详解
- javascript设计简单的秒表计时器
- c#定时器和global实现自动job示例