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.

[参考译文] MSP430F5308:在 MC__UP 被执行后、定时器不能立即启动

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1438856/msp430f5308-timer-cannot-start-right-after-mc__up-is-executed

器件型号:MSP430F5308

工具与软件:

大家好、团队成员:

在 CCS 12.8.1上、关于 TimerA、 执行 MC__UP 后计时器无法立即启动。 请您验证一下吗? 谢谢你。

TA0CTL = TASSEL__ACLK | MC__UP | TACLR; // SMCLK、向上计数模式、清除 TAR

此致、

Kim Yue

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

    您好、Kim

    请帮助您 在 https://www.ti.com/tool/download/SLAC469上尝试运行示例代码 MSP430F530x_TA1_11.c

    此示例代码基于 TA1

    TA1CTL = TASSEL_1 | MC_1 | TACLR;      // ACLK、向上模式、清除 TAR

    我可以知道 TA1上此示例的时钟设置与使用 TA0的代码相同吗?

    谢谢!

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

    计时器将启动。 当然、前提是存在 ACLK。

    我特别喜欢如何将代码修改为使用 ACLK、但注释上显示了 SMCLK。

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

    尊敬的 David 和 Xiaodong:  

    从计时器的前景来看、设置与我使用 timer0的代码类似、但 TA1CCTL0=OUTMOD_4;而在我的 TA0代码 TA0CCTL0=OUTMOD_7;中。

    但这实际上无关紧要。

    使用您提供的示例代码、我仍然只能在运行 exit (1)后激活 TimerA1、并且签名与之前完全相同。

    由于运行示例代码需要外部晶振、因此我将时钟源更改为内部 refoclk。 这一变化不应影响计时器的性能、对吧?

     

     

    #include

     

    无符号 SEL = 1;

     

     

    内部 主电源 ( 空洞 )

     

     WDTCTL = WDTPW | WDTHOLD;                //停止 WDT

     P1DIR |= BIT7|BIT0;                           // P1.7 output

     P1SEL |= BIT7|BIT0;                           // P1.7选项选择

     

    如果 (SEL==0){

       /**********

        * clk sourcec = XT1外部晶振

        ******* /

     //配置 XT1

     P5SEL |= BIT4|BIT5;                      //端口选择 XT1

     UCSCTL6并且=~(XT1OFF);                    // XT1打开

      UCSCTL6 |= XT2OFF;

     UCSCTL6 |= XCAP_3;                       //内部负载电容

     UCSCTL3=0;                             // FLL 基准时钟= XT1

     //循环直到 XT1、XT2和 DCO 稳定-在本例中循环直到 XT1和 DCO 稳定

     应执行的操作

     {

       UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | DCOFFG);

                                               //清除 XT2、XT1、DCO 故障标志

       SFRIFG1并且=~OFIFG;                     //清除故障标志

     } while (SFRIFG1&OFIFG);                  //测试振荡器故障标志

     UCSCTL6并且=~(XT1DRIVE_3);                // XTAL 现在稳定、减少驱动强度

     UCSCTL4 |= SELAD_0;                       // ACLK = LFTX1 (默认)

    }

    设计

      /**********

       * clk sourcec = refoclk

       ******* /

     UCSCTL3=SELREF_2;

     UCSCTL4 = SELM__DCOCLKDIV| SELS__DCOCLKDIV | SELA__REFOCLK; //良好时钟条件

     UCSCTL5 |=DIVA__1 | DIVM__1 | divs__2;

     UCSCTL6=XT1OFF|XT2OFF;

      应执行的操作

      {

        //UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | DCOFFG);

        UCSCTL7 &=~(XT2OFFG + DCOFFG + XT1LFOFFG);

                                                //清除 XT2、XT1、DCO 故障标志

        SFRIFG1并且=~OFIFG;                     //清除故障标志

      } while (SFRIFG1&OFIFG);

     

     

    }

     

     //配置 TimerA1

     TA1CCTL0 = OUTMOD_4;                     // CCR0切换模式

     TA1CCR0 = 10-1;

     TA1CTL = TASSEL_1 | MC_1 | TACLR;        // ACLK、升压、清除 TAR

     

     //__bis_SR_register (LPM3_bits);            //进入 LPM3

     ___ no_operation ();                        //表示调试器

    }

     

    此致、

    Kim Yue