在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。
而这个最大的应用是通过单周期指令去测试系统时钟是否配置的正确。
关键字:STM32 指令周期
引用地址:
STM32的指令周期
推荐阅读最新更新时间:2024-11-17 17:03
STM32助你轻松解码数字电源设计
如果把处理器和传感器分别比作是电子设备的“大脑”和“五官”,那么电源管理就是电子设备的“心脏”,其重要性不言而喻。 物联网时代,功能越来越强大的服务器、通信设备等产品推动了半导体工艺技术不断升级,体积小、性能强大的芯片要求电源管理IC能提供更智能的控制环路、更快速的动态响应、更高的电压反馈精度以及更简化的外围电路布局设计。 面对这些要求,拥有集成度高、快速响应、设计灵活、可控性强等优势的数字电源技术备受青睐。 如何定义数字电源? 数字电源,以数字信号处理器(DSP)或微控制器(MCU)为核心,将数字电源驱动器、PWM控制器等作为控制对象,能实现控制、管理和监测功能的电源产品。它是通过设定开关电源的内部参数来改变其外特性
[单片机]
STM32 USART寄存器方式编程
#include stm32f10x.h #define GPIOA_ODR_A GPIOA_BASE+0X0C #define GPIOA_IDR_A GPIOA_BASE+0X08 #define GPIOB_ODR_A GPIOB_BASE+0X0C #define GPIOB_IDR_A GPIOB_BASE+0X08 #define GPIOC_ODR_A GPIOC_BASE+0X0C #define GPIOC_IDR_A GPIOC_BASE+0X08 #define GPIOD_ODR_A GPIOD_BASE+0X0C #define GPIOD_IDR_A GPIOD_BASE+0X08
[单片机]
STM32学习笔记之USB工程目录文件分析
接下去要分别分析下这几个文件: hw_config.c: 这个文件主要是配置一些跟板载及系统相关的代码,比如说USB系统时钟配置,上拉电阻引脚及LED灯配置,还有USB的中断灯。主要的函数如下: void Set_System(void); /*设置系统时钟,USB 及LED引脚配置*/ void Set_USBClock(void); /*设置USB的时钟频率*/ void GPIO_AINConfig(void); /*设置GPIO模拟输入(这里是空函数)*/ void Enter_LowPowerMode(void); /*进入低功耗模式(这里是空函数)*/ void Leave_LowPowerMode(vo
[单片机]
STM32学习笔记:【003】GPIO
在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output 、通用输入/输出)了,在STM32中,除了除去ADC以外的复用功能,剩下的几乎就是GPIO了。 下面给出GPIO的基本使用步骤: 初始化 1.声明一个GPIO属性结构体,设置各成员属性 这个结构体的属性是这样的: typedef struct { uint32_t Pin; /*指定的引脚号,右值表达式可以是GPIO_PIN_0到~GPIO_PIN_15任意相或 */ uint32_t Mode; /* 模式 GPIO_MODE_INPUT 输入模式
[单片机]
stm32-led-串口-PWM
因为项目需要,学习了一下stm32的GPIO,串口,PWM,中断部分,在这里做个小结, 共同学习,所有程序均经过实际测试,输出正确。 将GPIO,串口,PWM(定时器)的配置程序粘贴如下 1、使能外设的时钟:APB1ENR,APB2ENR 2、配置寄存器或者说是控制寄存器。在配置stm32外设时,任何时候都要先使能该外设的时钟!而每个控制寄存器,很有可能包括了,1模式寄存器,2使能寄存器,3才可能是我们认为的数据寄存器或者内容寄存器。 3、使能外设。即使配置好了,没有使能外设,则外设永远不会工作,这一点比较容易遗忘。 寄存器配置,请查看 http://wenku.baidu.com/link?url=NE4
[单片机]
STM32的usart2串口调试
先是参考 http://wenku.baidu.com/view/78f6b1350b4c2e3f572763e9.html 调通了usart1 然后将程序进行修改,对Usart2进行配置,配置完了之后,程序还是没有正确,然后在void GPIO_cfg();函数中添加一句 GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); 最后程序如下, #include stm32f10x_lib.h FlagStatus RX_status; FlagStatus Tx_status; void RCC_cfg(void); v
[单片机]
stm32 hard fault及堆栈探究
在调试RTC过程中,程序在主循环中执行两次后就进入hard fault的while(1)中断,keil显示调试窗口显示imprecise data bus error。完善RTC配置的时序也无济于事。网上查到一些hard fault的资料: STM32F10xxx Cortex-M3 programming manual 2.3.2对hard fault, bus fault等有具体的解释。keil的网站上也有概括性的解释:hard fault由bus fault, memory management fault或usage fault引起,前者有固定的仅次于NMI的高优先级;调试过程中出现的bus error属于bus fau
[单片机]
基于信息融合技术的无线火灾探测报警系统
火的应用对人类的文明发展起了重要的作用,而火灾也一直威胁着人类的生活,造成了重大的生命财产损失。尤其近年来,随着国家经济的快速发展,城市化程度的进一步提高,人员密集场所数量不断增加,火灾的发生频率越来越大,需要社会各界引起高度重视,及时消除隐患,确保消防安全。 目前,火灾自动探测报警系统的应用广泛,在很多地方已成为必备装置,起到了安全保障作用。但在火灾探测报警系统的实际应用中,也出现了许多问题,市场现有产品质量参差不齐,存在产品功能单一、可靠性稳定性不高;只对某一种火灾参数进行探测,出现误报漏报等诸多问题。随着微处理器技术、传感技术、通讯技术、控制技术和人工智能技术等的不断发展,火灾探测报警系统的主要发展方向向着高可靠、低误
[单片机]