我正在尝试在上述主题中配置实时计数器。 该手册说明了如何通过读取来清除 RTCIV。 我对某个函数进行了调用、并且在该函数内进行了调用
变量
char 垃圾;
在启用 IRQ 之前、我有分配:
垃圾= RTCIV;
但是、当我观察具有断点的寄存器时、我永远不会看到这被清除。 有人能告诉我我我发生了什么错误吗? 编译器会向我发出警告、说该变量从未被使用。 我在项目编译器上将优化关闭。
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.
我正在尝试在上述主题中配置实时计数器。 该手册说明了如何通过读取来清除 RTCIV。 我对某个函数进行了调用、并且在该函数内进行了调用
变量
char 垃圾;
在启用 IRQ 之前、我有分配:
垃圾= RTCIV;
但是、当我观察具有断点的寄存器时、我永远不会看到这被清除。 有人能告诉我我我发生了什么错误吗? 编译器会向我发出警告、说该变量从未被使用。 我在项目编译器上将优化关闭。
您好、Steve、
我建议您从 TI Resource Explorer 中的 FR2422工作 RTC 示例开始。 您可以在此处找到这些内容:
你好,Leonardo。。。
我是从这开始的。 我从示例中复制了我可以在设计中使用的内容、现在我正在尝试转到我需要的位置。 用户指南明确地说、RTCIFG 通过读取 RTCIV 被清零。 该产品 Resource Explorer 中的应用程序代码不执行任何操作来清除该标志。 我发现、Explorer 中的应用程序代码并非总是编写得很好。 我想知道为什么在对 RTCIV 执行读取操作时该标志不会被清除?
我的第一个猜测是一个调试器幻想--可能是 RTC 在你处于一个断点时运行,调试器在不到一秒钟的时间内不能做任何事情。 您可能必须编写一些代码、连续读取 RTCIV 两次、然后在末尾断点
正如 David 所说的、RTCIV 是不同寻常的(至少根据 UG)、您无法使用写操作将其清除。 我想这与 RTCIFG 是我知道的唯一 IFG 不能被明确清除的事实是相关的--你只能通过读取 RTCIV 来清除它。
调试器复位不会停止 RTC、我想它更像是 PUC 而不是 POR。
FR2433 Launchpad (我想还有其他一些)附带了一个使用 RTC 的演示、当我第一次将自己的程序加载到中时、由于 RTCIE 仍然被设置、它在 ISR_TRAP 上失败。 这是一个很好的头刮擦点、持续了几分钟。
[编辑:抱歉、我错过了另一个问题。 用户指南(SLAU445I)表0-1..]中介绍了该符号。
让我问你这个…
我是否应该能够执行以下操作?
加电时、等待开关被按下。 按下开关后、PWM 将运行一段时间(这由 RTCIV 中的计数器控制)。 在 RTCIV 内的这一时间到期后、我将通过设置 PMMREGOFF 来调用 LPM3.5。 我想再次通过使用之前按下的同一开关来唤醒、在此操作中、我希望 RTCIV 计数到一个不同的值。 例如、您按下1.4、PWM 将运行1/2小时、然后我进入 LPM3.5的时间非常长、比如说50小时(假设所有 RTC 寄存器保持不变(即30分钟中断)、它只是一个在这里发生变化的计数变量)。 在 LPM3.5 运行且您处于50小时窗口的同时、我希望按下1.4来唤醒您并再次打开 PWM。
问题:
上述操作是否可以在代码中执行、或者 RTC 是否允许我执行此操作?
在进入 LPM3.5之前、我是否必须使用某种形式的*(unsigned int *) BKMEM_BASE、如果需要、如何使用它? (我关心 P1.4有一个下拉电阻并且具有中断功能)
我的下一个问题是、如果 RTCIV 中有一个计数变量、如何将该值存储到备用存储器中、以便当我从 LPM3.5中退出时?
谢谢
BAKMEM 是可耐受 LPM3.5的存储器。 [此外:如果您关闭 RTC、您将进入 LPM4.5、BAKMEM 无法承受这种情况。] 示例 msp430fr235x_lpm3_5_01.c 使用它来存储 P1OUT (实际上是 LED 的 BIT0)的内容、以便它可以恢复它、切换它、然后再次保存它。 听起来您的 RTC 计数可能适合这种情况。
数据表(SLASEE5C)第6.10.10条规定您具有32字节的 BAKMEM (字对齐)。 它们中的每一个都有名称、但它可能更容易用作位于 BKMEM_BASE 的数组(字节或字)。 只需在 LPM3.5之前存储一些东西,然后--只有在从 LPM3.5重新启动时--再次获取它。
[编辑:链接器向我发出警告、但它似乎做了正确的事情:
#pragma 位置(VIVACE_KITK、BKMEM_BASE)
#pragma NOINIT (VICE_KIT)
unsigned five_kit[32/sizeof (unsigned)];
]
--
至于较长的问题、恐怕我已经失去了路径。 我没有看到任何明显不可行的东西。 您可能应该将其绘制为确保您已涵盖所有案例。