MSP430定时/计数器TimerA中断解惑

图1 MSP430实物图

我喜欢MSP430这款单片机,它的超低功耗设计充满了智慧,尤其是各种时钟和中断,它的设计理念非常先进,细细琢磨会体会到背后的工程师们的独特用意。

刚学过51单片机,再来学习MSP430F149,在定时器中断这一块,对于初学者还是有一定难度的,这是因为430的定时器配置更为灵活,比51要复杂好多,下面我把我初学时遇到的一些问题写下来供大家参考。

1、首先,用户指南中有Three configurable capture/compare registers这句话,这表明430有三个捕获比较单元可以用来配置,那么多几个捕获比较单元有什么用?答案是:非常有用,就好比百米短跑的秒表,它如果只能够计一个人的时间显然是不够的,多几个这样的单元用户可以根据自己需求灵活开发。

2、很多初学者搞不懂什么是捕获模式,什么是比较模式,打个比喻,捕获模式,就像100米短跑,当你到达终点就触发中断(秒表按下停止键),捕获到的就是你的耗时。

     而比较模式就像是给定你确定的时间(例如1分钟),当到达时间之后就会触发中断。

     捕获模式适合用于测量时间间隔,测量脉冲,速度。而比较模式适合产生周期信号。

3、当Timer_A计数计满的时候需要手动清零吗?

     答案是:不需要!看下图:

               用户手册中写道:TACLR是定时器复位位,当计满的时候,会自动清零。

  

4、其次,关于定时器中断有两种,一种是溢出中断TAIFG,另一种是捕获比较中断CCIFG,这两种到底有什么区别,尤其是寄存器配置过程中TAIE和CCIE到底使用哪一个,让很多初学者头疼,下面我就解释清楚;

这是在Continues模式(连续增计数)下,TAIFG和CCIFG产生的条件图,文字也讲的很清楚了,TAIFG is set when the timer counts from 0xffff to zero,就是说当定时器

从最大值0xffff到0的时候,溢出中断标志位会置1,也就是当定时器计满的时候再等上一个时钟周期(1h)之后置1,这个计满,是指16位的定时器计到最大值0xffff,而不是用户设定的比较值CCR0.

而CCIFG是当定时器计数到CCR0的时候置1,CCR0的值由用户自己设定。

在Up增计数模式下,由于定时器不可能计满(0xffff),他只能计到CCR0,因此CCIFG触发的时间和TAIFG触发的时间只差一个时钟周期。

当Timer=CCR0的时候捕获比较中断TAIFG置1,而当Timer从CCR0重新归零的时候TAIFG置1.

当用户使用中断的时候,需要去配置相应的中断允许位。

一定要搞懂一件事情,那就是中断标志位和中断使能位,中断标志位相当于高考分数线,而中断使能位相当于高考准考证,只有先拿到准考证(先使能中断允许),然后参加考试过了分数线(触发了中断),最终才能上大学(响应中断)。当然上大学(响应中断)也不是必要的,可以采用查询法(不领准考证,自己做套试卷,然后根据标准答案得分),当查询到符合条件(考试成绩合格),那么说明你一样具备大学生的入学能力(处理相应事件)。

用户手册中有关于TAIFG和CCIFG的使能及标志位:

如上图所示:寄存器TACTL的TAIE是溢出使能位。TAIFG是标志位。

如上图所示:CCIFG是捕获比较中断标志,而CCIE是捕获比较中断使能。

本人是电子类专业学生,上学的时候学校只开设了51单片机的课程,后来出于兴趣相继学习了16位单片机MSP430和32位单片机STM32,从寄存器开发到库函数开发到嵌入式操作系统,逐渐领略到了微控制器世界的无穷魅力。有些人一上手就是LINUX操作系统下开发或者STM32的库函数开发,我认为这种学习方式不正确,没有经历过靠双腿长途跋涉的人是永远体会不到骑自行车时的轻松感,只有扎扎实实学习基于寄存器开发,才能更清楚的明白库函数开发和使用操作系统的必要性,只有经历了在单片机芯片英文手册中苦苦查找寄存器查找标记位的历练,才会在以后的学习中体会到守望云开的明朗!

仅以此文献给我一位素未谋面的好友——
空山新雨后,天气晚来秋。
明月松间照,清泉石上流。
在这个由数字信号构成的冰冷的互联网世界里,文字背后的温情和敬意能驱散你内心的阴霾和孤独,这张网页的每一次点击都将是一位位遥远的陌生人对你的祝福。望你,开心快乐。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值