[求助] MSP430F5438A定时器使用中的TAxCCRn赋值问题

liujj05   2016-4-28 08:33 楼主
各位大牛好,最近刚接触一点儿MSP单片机的定时器程序。以TimerA举例:
配置:

TA0CTL = TBSSEL_1 + MC_1 + TACLR; // 选择ACLK(不重要,选谁都有这个问题),选择Up mode,清计数器
TA0CCTL0 = CCIE;// 使能比较中断

之后,配置 TA0CCR0 = 16000,如果在中断函数里面不对TA0CCR0进行任何操作,中断函数只能够进入一次。
必须要在中断函数中写入 TA0CCR0 += 16000,中断函数才会定时、连续的进入。

但是看User's Guide上面写的Up mode是这样的啊:
Up_mode.jpg
写的是“When the timer value equals TAxCCR0, the timer immediately restarts counting from zero”.
感觉上应该是自动的啊?如果还需要不断的赋值,那和continue mode又有什么区别了?
鉴于能够干活,对定时精度要求也不是太高所以这个问题就放着了也没有细细研究,发上来也希望大牛们有兴趣指导一下

另外,我看过一个能够正常运转的例程,用的是TimerB,配置是这么写的:
TBCTL = TBSSEL_1 + MC_1 + TBCLR + TBIE ;// 在头文件里面有这样的定义:#define   TBCTL    TB0CTL
TBCCR0 = 64 ; // 在头文件里面有这样的定义:#define   TBCCR0    TB0CCCR0
然后中断向量却写的是:
#pragma vector=TIMERB1_VECTOR
但是却能够正常的触发和进入中断
我不明白为什么配置了 0 编号的属性,却能进 1 编号的中断

以上

回复评论 (4)

来个程序啊
点赞  2016-4-28 16:44

哈哈哈不好意思,晚上回去了以后程序我想办法化简化简发上来~就是大家一般编一个定时器都怎么用啊?
点赞  2016-4-28 17:00
引用: liujj05 发表于 2016-4-28 17:00
哈哈哈不好意思,晚上回去了以后程序我想办法化简化简发上来~就是大家一般编一个定时器都怎么用啊?

不知道其他人,反正我是根据需要直接修改例程
点赞  2016-4-28 17:03
引用: 数码小叶 发表于 2016-4-28 17:03
不知道其他人,反正我是根据需要直接修改例程

哈哈哈这个有效率!
点赞  2016-4-28 20:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复