MSP430F5438A定时器使用中的TAxCCRn赋值问题

2019-03-24 09:24发布

各位大牛好,最近刚接触一点儿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条回答
数码小叶
2019-03-24 09:33
来个程序啊

一周热门 更多>

相关问题

    相关文章