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.

[参考译文] MSP430FR2311:MSP430FR2311 中未定义的计时器寄存器(使用 CCS 和 Energia)

Guru**** 2535150 points
Other Parts Discussed in Thread: MSP430FR2311, ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1566434/msp430fr2311-timer-registers-undefined-in-msp430fr2311-using-ccs-and-energia

器件型号:MSP430FR2311
主题中讨论的其他器件: Energia

工具/软件:

您好、


我想使用生成脉冲信号 MSP430FR2311 。 脉冲应该有一个 1µs 宽度 和 A 周期为 1 秒 。 多个器件 TimerA 以生成 1µs 脉冲、然后 TimerB 生成 1 秒周期。 为了保持简单、我使用了 轮询方法

最初、我尝试使用 delay_cycles () 此函数可生成 1µs 脉冲、但未给出准确的结果。 所以、我切换到使用 计时器寄存器 实现更精确的控制。

多个器件 Code Composer Studio (CCS) 引导加载程序。 但是、IDE 无法识别计时器寄存器—它会抛出如下错误:
“TA0CCR1"未“未定义。 我也得到了我在 for 循环中定义的变量的错误。

我还尝试使用 Energia IDE 、但问题仍然相同—无法识别计时器寄存器。

有人能帮我解决这个问题吗?

谢谢!


代码如下:

#include

内部 main (void)

   WDTCTL = WDTPW | WDTHOLD;   //停止看门狗计时器

 

   //将 P1.0 配置为输出

   P1DIR |= BIT0;

   P1OUT 且=~BIT0;

 

   //将 TimerA 用于脉冲生成 (1µs)、将 TimerB 用于周期 (1s)

 

   // TimerA

   TA0CTL = TASSEL_SMCLK | MC__STOP | TACLR;//选择 SMCLK、使计时器保持停止

   TA0CCR1 = 1;//在 1µs 之后切换

 

   // TimerB

   TB0CTL = TBSSEL_SMCLK | MC__STOP | TBCLR;

   TB0CTL |= ID_8;//设置预分频器= 8

   TB0CCR0 = 12500;// 1 秒(假设 1MHz SMCLK)

 

   while (1)

   {

       TA0R = 0;

       TA0CTL |= MC__UP;//在向上计数模式下启动 TimerA

       P1OUT |= BIT0;//设置输出引脚

       while (TA0R!= TA0CCR1){}

       TA0CTL &&~MC___UP;// Stop TimerA

       P1OUT 且=~BIT0;//清零输出引脚

 

       对于 (int i = 0;i < 10;i++)

       {

           TB0R = 0;

           TB0CTL |= MC___UP;//启动计时器 B

           while (TB0R!= TB0CCR0){}

           TB0CTL &&~MC___UP;// Stop TimerB

       }

   }

 

   返回 0;

}

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

    请查看此器件的数据表。 它显示没有 TimerA。