This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/MSP430FR6989:定时器问题

Guru**** 2589300 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/627966/rtos-msp430fr6989-timer-issue

器件型号:MSP430FR6989

工具/软件:TI-RTOS

我想使用两个比较寄存器在两个函数中运行计时器、这是可行的吗??

#define ClkFreq    8.                                //计时器时钟频率(MHz)

#define 10microSec  (10 * ClkFreq)             //计时器中断(10us)

编号

/*每10us 打勾一次*/
void Syetem_initTimer (void)

 TA3CCR0 = 10微秒  ;
 TA3CTL = tassel_2+MC__UP;  //SMCLK (8000000)、UP 模式
 TA3CCTL0 |=(CCIE);
 _bis_SR_register (LPM3_bits+GIE);
 __no_operation();


#pragma vector = TIMER3_A0_vector
_interrupt void Timer3_A0_ISR (void)


 TEMP= TEMP+10;  // SMCLK、向上计数模式、清零 TAR
I (EnableFlag)


  if (temp>=5000000) //5sec
   {

EnableFlag = 0;

     TEM= 0;
   }

上述代码对我的一个函数有效、但如果我想在另一个函数中使用计时器、代码如下所示

/*每10us 打勾一次*/
void Syetem_initTimer (void)

 TA3CCR0 = 10微秒  ;

TA3CCR1 =10microSec  ;
 TA3CTL = tassel_2+MC__UP;  //SMCLK (8000000)、UP 模式
 TA3CCTL0 |=(CCIE);

 TA3CCTL1 |=(CCIE);
 _bis_SR_register (LPM3_bits+GIE);
 __no_operation();


#pragma vector = TIMER3_A0_vector
_interrupt void Timer3_A0_ISR (void)

开关(TA3IV)

情况0:

 TEMP= TEMP+10;  // SMCLK、向上计数模式、清零 TAR
I (EnableFlagFunc1)


  if (temp>=5000000) //5sec
   {

EnableFlagFunct1 = 0;

     TEM= 0;
   }

案例 CCR1:

I (EnableFlagFunc2)


  if (temp>=10000000) // 10秒
   {

EnableFlagFunc2=0;

     TEM= 0;
   }

以上代码对我无效

plz 帮助我解决同样的问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从数据表的表6-4和用户指南的第25.2.6节、我们了解到 TA3CCR0和 TA3CCR1 CCIFG 由不同的中断矢量提供服务、因此需要单独的服务例程。 请查看代码示例并相应地修改您的解决方案。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    根据您的建议、我进行了更改、非常感谢