我希望能简要解释一下NUCLEO-H223ZG板上的汇编程序定时循环如何指示它在单个cpu时钟周期中执行。使用的两个指令,一个SUBS和一个BNE,在循环分支时消耗三个时钟周期,所以有一些神奇的东西正在进行中!我使用GPIO BSRR来切换LED,需要使用275M的定时循环计数来实现大约每秒一次闪光。
对于Cortex M0、M3和M4,循环计数包含在技术参考手册中(例如Cortex M4(。对于M7,它们没有发布,但听起来你已经自己测量了答案,所以在这种情况下不需要在手册中。
如果您的代码是正确的,那么处理器能够在一个周期内执行这两条指令。
这并不奇怪。例如,M4可以在单个周期中执行16位数据处理指令和it
指令。
如果您需要确定性(但更差(的性能,则可以禁用此功能。请参阅辅助控制寄存器中的DISFOLD位。