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.

[参考译文] CCS/MSP430FR5994:计时器 B 时钟测量

Guru**** 2589300 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/694258/ccs-msp430fr5994-timer-b-clock-measurement

器件型号:MSP430FR5994

工具/软件:Code Composer Studio

大家好、我使用 Timer B 来测量一组代码在函数中所执行的时钟周期

我有一个不断调用此函数的 while 循环、我在函数内重置时钟、在函数结束时、我尝试打印出我花费的时钟周期量

我开始注意到一些奇怪的东西。 我使用 CCS 中的配置文件时钟工具进行了检查。 第一个函数调用始终为我提供正确的值、 而后续函数调用为我提供2次该值  

这是我的函数和时钟设置的代码  

void save (void){
TB0CTL = TBSSEL_2 + MC__Continuous + TBCLR;
CHECK = 1;
P1OUT &=~ BIT1;
状态= NVS_DATA_COMMIT (nvsHandle1、&data);
ctpl_saveCpuStackEnterLpm (CTPL_MODE_NONE、0);
TB0CTL = MC_0;
温度= TB0R;
printf ("%u\n"、temp);
}
void initClocks(void)
{
/*时钟系统设置、MCLK = SMCLK = DCO (1MHz)、ACLK = VLOCLK */
CSCTL0_H = CSKEY >> 8;
CSCTL1 = DCOFSEL_0;
CSCTL2 = SELA_VLOCLK | SELESS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;
CSCTL0_H = 0;
} 

我们将感谢您的任何帮助,并提前感谢您的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Steven、
    您使用 SMCLK 作为时钟基准。 您似乎在函数期间进入 LPM 模式。 SMCLK 只在激活和 LPM0模式下可用。 尝试使用 ACLK 作为时钟源。

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

    在汇编语言中、我似乎有一个用于改变时钟频率的函数

    摆脱这种情况使其工作正常