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.

[参考译文] MSPM0L1306:当 MSPM0L1306中遇到断点时、如何在 CPU 暂停执行时停止计时器计数器以进行调试

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1490313/mspm0l1306-how-to-stop-timer-counter-while-cpu-execution-is-halted-for-debug-when-a-breakpoint-is-hit-in-mspm0l1306

器件型号:MSPM0L1306

工具与软件:

在我们的应用中、基于计时器0、每1ms 会检查一次某些检查条件。 在断点命中时进行调试时、由于计时器0 IRQ 处于挂起状态(已设置矢量表中验证的挂起位)、计时器仍保持运行、步进后立即提供计时器 IRQ、检查条件由于哪个 MCU 复位(预期行为)而失败

在调试时是否可以停止计时器

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

    想法是设置 PDBGCTL:FREE=0。 Driverlib 提供了一个函数、您可以这样做:

    > DL_Timer_setCoreHaltBehavior (timer、DL_timer_core_Halt_immediate );// PDBGCTL:{free=0.soft=0}

    ---

    未经请求:在该寄存器中大骂(TIMG8/12)我观察到:

    1) 1)复位值在 TRM (SLAU847D)表23-37中显示为 FREE=0、SOFT=0 [以红色显示?]、但在我给计时器上电(PWREN=1)后看到 FREE=1、SOFT=1。

    2)设置 FREE=0、SOFT=1 (DL_TIMER_CORE_HALT_DELAYD)要么(a)没有停止计时器要么(b)花费了这么长的时间(>1ms)、我无法辨别。 设置 FREE=0、SOFT=0似乎在断点处停止计时器。

    3) TRM 第23.2.10条说,这将只适用于 TIMA ,但它似乎工作(设置上述奇怪)为 TIMG8/12。

    [编辑:我刚注意到我在 G3507上进行了这些实验。 我希望 L1306的结果相同。]

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

    Bruce、您好!

    感谢您的答复  
     
    是的、如果我们将 FREE 和 SOFT 设置为0 foir 计时器外设、则调试器将停止计时器计数器值增量。


    再次感谢。
     

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

    谢谢 Bruce。