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.

[参考译文] LP-MSPM0L1306:使用 CCS 计算 CPU 周期数

Guru**** 2448780 points
Other Parts Discussed in Thread: LP-MSPM0L1306, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1268002/lp-mspm0l1306-counting-cpu-cycles-with-ccs

器件型号:LP-MSPM0L1306
主题中讨论的其他器件: SysConfig

您好!

我使用 LP-MSPM0L1306和 CCS 12.4调试代码。
我希望对两行代码之间的 CPU 时钟周期进行计数。
根据 CCS 帮助内容、有几种不同的周期计数方法。
-在"Breakpoints"视图中使用"Count 均匀"。
-使用"Profile Clock"
但它们似乎都不适用于 MSPM0+。
(菜单 本身不存在 或演示)
我们有没有办法对时钟周期进行计数?

谢谢。此致、
田代浩一郎

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

    您可以使用 SysTick 对 CPU 时钟周期进行计数。

    1.在 SysConfig 中添加 SysTick

    2.将代码添加到要计数的代码的两行。

    2.1您可以在代码行之前和之后添加__BKPT (0);并 在 CCS 调试模式下在两个断点上手动读取 SysTick -> VAL 的值、然后计算 差值。

    //Start Test
    __BKPT(0);
    //User Test Function Start
    
    //User Test Function Stop
    __BKPT(0);

    2.2您也可以使用 程序来计算两次差值、并 在 CCS 调试模式下的断点处读取 SysTickCnt1。

    uint32_t SysTickStr = 0;
    uint32_t SysTickStp = 0;
    uint32_t SysTickRd  = 0;
    uint32_t SysTickCnt1 = 0;
    //Calculate System Tick Read Cycles
    SysTickStr = SysTick->VAL;
    SysTickStp = SysTick->VAL;
    SysTickRd  = SysTickStr - SysTickStp;
    //Start Test
    SysTickStr = SysTick->VAL;
    //User Test Function Start
    
    //User Test Function Stop
    //Calculate SysTick
    SysTickStp = SysTick->VAL;
    SysTickCnt1 = SysTickStr - SysTickStp - SysTickRd;
    __BKPT(0);