zoukankan      html  css  js  c++  java
  • STM32的指令周期

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

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

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

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

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

    然后开始仿真

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

    并且设置以上的断点,开始单步调试。并记录时间,

    单步调试

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

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

    ARM官方给出的指令周期是

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

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

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

  • 相关阅读:
    java中的Set的使用以及各种遍历方法(较为全面)
    系统图标
    监听按钮
    GUI
    【Avalon】获取隐藏元素的尺寸
    Hooks
    特性节点Attribute
    ngCloak
    邮件
    时间
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007340.html
Copyright © 2011-2022 走看看