1519|0

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430f5310定时器的认识 [复制链接]

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的中断时间间隔不变。

  1. TA0CCR0 = 8000; //TA0CCR0 是16位寄存器,最高65535(切记),ccr0必须最大,因为一旦计数到ccr0,TA0R便立刻清0,用于控制周期没8000单位时间就会触发一次

  2. TA0CCR1 = 4000; //   当TA0R计数到4000时,不会清0,
  3. TA0CCR2 = 1000; //   当TA0R计数到1000时,不会清0,
复制代码

下面是两个中断函数,一个专用中断向量,一个为公用中断向量:

!!!中断中最需要注意的是:一旦某一个比较器开了中断使能,必须要有对应的中断处理程序,否则程序会跑飞!!!

  1. / Timer0 A0 interrupt service routine
  2. #pragma vector=TIMER0_A0_VECTOR   //CCR0的中断向量
  3. __interrupt void Timer_A0 (void)
  4. {                 
  5.   //中断处理,当计数器TA0R计数到CCR0的时候会触发这个中断函数     
  6. }


  7. #pragma vector=TIMER0_A1_VECTOR   //公用中断向量
  8. __interrupt void TIMER0_A1_ISR(void)
  9. {
  10.   switch(TA0IV)
  11.   {                 
  12.     case CCIFG1:    //中断处理函数      //计数至CCR1触发  
  13.              break;
  14.     case CCIFG2:                      //计数至CCR2触发
  15.              break;
  16.     case CCIFG3:  break;              // CCR3 not used

  17.     case 8:  break;                    // CCR4 not used

  18.     case 10: break;                    // CCR5 not used

  19.     case 12: break;                    // Reserved not used

  20.     case 14: break;                    // 溢出触发         

  21.     default: break;

  22. }

  23. }
复制代码


 
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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