主题中讨论的其他器件:MSPM0L2228
工具与软件:
如何执行 TIMG12或 TIMG13的32位读取? 计数器值寄存器只有一个16位值、而用于读取寄存器的 SDK 功能强制进行16位读取。 我假设需要以某种方式执行两次16位读取。
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.
工具与软件:
如何执行 TIMG12或 TIMG13的32位读取? 计数器值寄存器只有一个16位值、而用于读取寄存器的 SDK 功能强制进行16位读取。 我假设需要以某种方式执行两次16位读取。
CTR 的位16-31被保留;当前计数值在位0 - 15中返回。 用于读取 CTR 的 SDK 函数会屏蔽位16 - 31。
__static_inline uint32_t DL_Timer_getTimerCount (GPTIME_Regs *gptimer)
{
返回(gptimer->COUNTERREGS. CTR 和 GPTIMER_CTR_CCTR_MASK);
我所拥有的 SDK 的掩码定义为:
#define GPTIMER_CTR_CCTR_MASK ((uint32_t) 0x0000FFFFU)/*!<当前计数器值*/
此定义位于: \ti\devices\msp\peripherals\hw_gptimer.h 中
我拥有的 SDK 为:mspm0_sdk_2_00_01_00
MSPM0L 参考手册我拥有: 文献编号:SLAU847D 2022年10月–2024年5月修订
对于 TIMx CTR、它显示了以下内容。
我在调试器中检查了 DL_Timer_getTimerCount 函数的反汇编:
通过 uxth 指令应用掩码。
你得到的东西和我得到的东西之间存在某种类型的失配。 我们使用的 MCU 选择符号是:__MSPM0L2228__。 我们在软件中还没有太多的功能、但我们拥有的是可以操作的——包括一个自由运行的16位定时器 TIMG0。 不确定两个掩码定义之间不匹配的来源是什么。 我还没有尝试使用 TIM12 (32位计数器)进行构建、似乎它不起作用、这正是我最初提出问题的原因。