主题中讨论的其他器件:MSPM0L1306、 MSPM0G3507、、 SysConfig、
工具与软件:
大家好、我遇到了一个问题、即计时器队列实现的代码仅在 TIMG14和 TIMA0上起作用。 对于 MSPM0C1104、TIMG8不起作用。 我还注意到、我的代码仅在 MSPM0G3507和 MSPM0L1306 LaunchPad 板上使用 TIMA0起作用。
我使用 C SDK 复制了一个最小的示例(实际代码用 Rust 编写)、它似乎 TIMG8在逐行复制我编写的 Rust 代码时从未开始计数。 更改"empty_non_sysconfig.c"文件中的定义以使用 TIMG14或 TIMA0将导致代码正常工作。 该代码应导致 Launchpad 电路板上的 LED 每秒切换一次。
尽管此处没有详细说明、但我将解释我要尝试执行的操作。 定时器队列使用其中一个定时器、并将其置于一个可永远递增计数的自由运行模式。 计时器队列工作使用 CCU0并加载中断来递增指示经过了多少个32768个计时器"节拍"的值。 周期数和当前计数器值用于计算与自启动以来经过的时间量相对应的全局"节拍"计数器。 CC1会加载一个值、该值对应于当前周期内在计时器警报发生前的节拍数。 当警报将在下一周期内发生时、启用 CCU1中断。 然后、在发生警报时发生 CCU1中断。
我记得 MSPM0G3507硬件中存在的 TIMER_ERR_01勘误表。 但是、鉴于此代码适用于3个计时器中的2个计时器(以及 G3507的其中一个计时器)、我不确定问题是否与之相关。
我已附上一个针对 LP-MSPM0C1104电路板重现此问题的工程。 这仅包含与 CCU0和负载相关的代码、因为 TIMG8从不启动。
e2e.ti.com/.../empty_5F00_non_5F00_sysconfig_5F00_LP_5F00_MSPM0C1104_5F00_nortos_5F00_gcc.tar