STM32的指令周期

在keil中编程时,写了一行代码,然后就想知道,执行这句C代码需要多长时间。

时钟周期在这就不解释了,频率的倒数。

指令周期,个人理解就是cpu执行一条汇编指令所需要的时间。

我们知道cm3使用的三级流水线,那么到底一条指令的执行需要多少个时钟周期。下面通过keil软件仿真,来计算一个指令所需的时钟周期。

 

使用STM32F103RC,。配置其主时钟HCLK为72mhz测试代码如下:

STM32的指令周期_第1张图片

然后开始仿真

STM32的指令周期_第2张图片

编译通过后,点击dbg按钮,调出如下窗口:

STM32的指令周期_第3张图片并且设置以上的断点,开始单步调试。并记录时间,

STM32的指令周期_第4张图片

单步调试

STM32的指令周期_第5张图片

这样便可以计算出执行  MVOS  r1,#0x04 所用的时间视为29.20833-29.19444=0.1389us。使用这种方式便可以测试出每条指令所使用的时间。便有了下面的表。

STM32的指令周期_第6张图片

但是,我测试BL.W指令所需要的是8T0,不知道是什么原因,其他指令都是正确的

ARM官方给出的指令周期是

STM32有三级流水线,指令周期不定的,arm给出的是1.25MIPS/Mhz,一个平均执行速度。

个人理解就是1Mhz的频率,每秒钟可以执行1.25M指令。72M,那么就是72*1.25。

而这个最大的应用是通过单周期指令去测试系统时钟是否配置的正确。

你可能感兴趣的:(stm32)