问定时器增计数模式和连续计数模式的区别

2019-08-04 17:47发布

请问:定时器中增计数模式和连续计数模式有什么区别吗?难道就是增计数模式能计数到CCR0,而连续计数模式只能计数到65536?如果是这样,那在连续计数模式下就不用设置CCR0的值了,但我看到例程中,仍然设置了CCR0,不解,请指教。

#include  <msp430x14x.h>
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3DIR |= BIT4;                            // P3.4 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P3OUT ^= BIT4;                            // Toggle P3.4
  CCR0 += 50000;                            // Add Offset to CCR0
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
永远的不知
1楼-- · 2019-08-04 19:26
1# 512365098

在连续模式,他就象闹表一样,而ccr0就象您定时的闹钟,每次到达ccr0,就会产生一个事件。
bit6019
2楼-- · 2019-08-04 22:59
 精彩回答 2  元偷偷看……
512365098
3楼-- · 2019-08-05 04:52
2# 永远的不知

连续模式,计时器是要计满的,但是在计到CCRx时,产生中断;
而增计数模式,不需要计满,只要到CCRx,就会产生中断;
两者计数形式不一样,但最终效果是一样的,对吧?
令问:我看到有的程序里会这样设置CCR0=1000-1,这样写是什么意思?1000-1跟1000区别不大啊
永远的不知
4楼-- · 2019-08-05 06:04
4# 512365098

你可以把它看做闹钟和定时炸弹的区别,闹钟响了,它还会继续走;但定时炸弹到时直接炸了,时钟不会在继续走。
一个是循环事件,一个是单次事件。
您说的那个1000-1,这个要看写程序的人的思路了。
512365098
5楼-- · 2019-08-05 10:07
5# 永远的不知
增计数是单次事件吗?在430一本教材上有这样一句话——计数器TAR可以增计数到CCR0的值,当计数到与CCR0的值相等时,定时器复位并从0开始重新计数。
从其他例程中也看到应用增计数模式的,应该不是单次事件。
永远的不知
6楼-- · 2019-08-05 11:43
6# 512365098

抱歉,这个是我理解错误,看成单次增计数模式了:(

在连续计数模式中,很多时候会用到CCR0、CCR1等信号,闹钟的例子最形象了,在周期循环定时中,CCR0、CCR1对应不同时刻的事件。这就是430定时器最大的特点,在一个循环中可以产生多个不同的定时事件。

一周热门 更多>