keil 仿真测量程序运行时间

keil 仿真测量程序运行时间

有些时候我们对程序的性能需要调优,优化代码以提高起运行效率,那就需要精确的测量某一段代码的运行时间。非常高兴的是在keil里面提供了一个仿真调试手段,用来完成这个任务,好用!
首先做好相关的设置,如下:
第一步:在工程选项里面设置CPU的运行频率。其实对于优化代码来说,这个不一定非得必要和绝对准确,因为我们只要知道在相同的CPU频率下,代码在优化前和优化后两次运行时间差(相对时间),就可以评估出来是否完成了优化,或者提升了多少性能。

在这里插入图片描述

第二步:在debug的trace菜单也设置好core clock,仿真可以去掉enable。
在这里插入图片描述

在这里插入图片描述

第三步:运行代码,在要测量的代码第一行和最后一行分别放一个断点。
然后记录下来左边寄存器窗口的sec的数值,或者右键在左下角状态栏的“t2:0.00000s”那个位置弹出菜单,点击reset t1,t2
在这里插入图片描述

在这里插入图片描述

第四步:点击运行,最后记录下下来左边那个sec,和先前的相减就是运行时间。也可以直接观察右下角的t就是运行时间。

在这里插入图片描述

在这里插入图片描述

转自https://blog.youkuaiyun.com/huangbinvip/article/details/104700492/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242

### 如何在 KEIL MDK 中实现代码段执行时间的精确测量 #### 使用在线调试功能测量代码段执行时间 为了测量特定代码段的执行时间,可以通过在线调试的方式完成。具体操作是在目标代码前后分别设置断点并记录寄存器中的时间戳。 当进入在线调试模式后,在左侧窗口切换至 **Registers** 栏目。该栏目下的 `Sec` 字段显示的是当前系统秒级计数值[^3]。对于更精细的时间度量,则可能依赖于具体的微控制器特性及其内置定时器资源来获取更高精度的时间戳。 #### 配置硬件仿真环境 确保选择了合适的硬件仿真设备用于连接开发板与PC端软件通信。这通常意味着要在工程设置里的 “Debug” 选项卡中选择右侧的硬件仿真类别,并从下拉菜单里挑选像 J-LINK 或者 J-TRACE 这样的接口适配器[^4]。 ```c // 示例C语言代码片段展示如何利用嵌入式系统的SysTick或其他定时器中断来进行高分辨率计时 volatile uint32_t start_time, end_time; void StartTimer(void){ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 停止计数器 SysTick->VAL = 0; // 清除当前值 start_time = SysTick->LOAD - SysTick->VAL; } uint32_t StopTimer(void){ end_time = SysTick->LOAD - SysTick->VAL; return (end_time - start_time); } ``` 上述代码展示了基于ARM Cortex-M系列MCU上常用的SysTick定时器进行简单计时的方法之一。实际应用时应根据所使用的具体处理器型号调整相应的初始化配置以及读取方式。 #### 注意事项 由于不同项目的底层硬件平台差异较大,因此建议查阅对应单片机的数据手册以获得最准确可靠的计时手段指导;另外还需注意某些情况下外部因素如电源电压波动也可能影响最终测得的结果准确性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值