关于代码执行时间的讨论,
KEIL 下如何准确测量代码执行时间?-CSDN博客
文章里写的很清楚了,这里补充文章中的一个点:
执行时间(sec/t0)如何与DWT关联的?
keil debug中的Registers窗口
从keil的帮助手册中可以看到,states更新自DWT_CYCCNT这个寄存器,而sec“基于和states相同的信息”。也就是说sec同样与DWT_CYCCNT寄存器有关。
来源:keil帮助手册Debugging章节
下图中可以看到,DWT_CYCCNT寄存器是对时钟周期进行计数的寄存器。
来源:ARM® Cortex®-M3 Processor
Technical Reference Manual-Data Watchpoint and Trace Unit
那么可以知道sec就是用设置的时钟频率×时钟周期计数(states)得到,实测也确实有这样的规律。
在debug页面的trace选项下设置实际的核心频率,以便sec计算正确