我正在使用配置为对我的周期进行计数的计时器 A。 (CCS 周期计数器是毫无价值的--非常无用--所以我必须使用一个硬件计时器/计数器来获得有意义的结果。)
在我的测试中、我发现以下几点:
pushm #3, R11
popm #3, R11
需要11个周期。
(根据计时器 A。要获得该值需要很多其他细节--尽管每个指令的长度为4个周期,但打开和关闭计时器需要花费6个周期,因此应该花费8个周期。 但我必须接受的是、发生"开启"和"关闭"的周期点不一定是显而易见的。 因此、很多测试都让我达到了实际可以校准我报告的结果的程度。 这是一个过程。 相信我、这些值是准确的。 我已经付出了很大的努力来确保这一事实。)
《MSP430FR58xx、MSP430FR59xx 和 MSP430x6xx 系列用户指南》的表4-17中的文档:

显示每个周期的周期数应为5个周期、总共为10个周期、而不是11个周期。
我以1MHz 的频率运行、因此我认为这不是 FRAM 的任何等待状态问题、它肯定不是堆栈所在的 SRAM 的等待状态问题。
所以。 是否有额外周期来自何处的想法? 表格是否完全错误?
如果是的话,这不会令我感到意外。 PUSH Rx 指令需要3个周期、但 POP Rx 指令实际上是 MOV @SP+、Rx (格式 I 指令)、所以需要2个周期(请参阅表4-10)、而不是3。 因此、推后推送 POP 为5个周期、这是预期的。
尽管如此、考虑到上表中建议的对为10个周期(其中 N=3)、我预计不会有11个周期。
请提供任何帮助。 我想完全理解这里发生的情况。
谢谢、
Jon