如何测量STM32应用程序中的运行时间:使用Keil®的MDK-ARM事件记录器。
摘要本文介绍了Keil®µvision配置中所需的步骤,以确保在使用事件记录器时给出正确的时间测量值。STM32CubeMX设置在本例中,我们使用STM32L746 Nucleo板。目录。。。
总结
本文介绍了Keil®的µvision配置中所需的步骤,以确保在使用事件记录器时给出正确的时间测量值。
STM32CubeMX设置
在本例中,我们使用STM32L746 Nucleo板。这些指示也可以应用于任何其他STMicroelectronics板。我们使用STM32CubeMX来创建该项目。
1.使用STM32CubeMX创建一个新项目,并在选择器窗口中选择MCU零件号。
a.双击STM32L476RGT3零件号开始新项目。
2.在时钟配置选项卡下,将HCLK的值调整为24MHz。
3.在项目经理选项卡下,在项目设置中选择项目位置和项目名称。
4.通过在项目设置中选择“MDK-ARM”,为Keil®选择工具链/IDE。
5.单击[文件],然后选择[保存项目]。
6.接下来选择[生成代码]生成代码并启动Kiel IDE。
Keil®配置
1.在Keil®中,在项目窗口中突出显示项目名称,然后选择[project][options for Target'<project-name>'],然后选择[Debug]选项卡。选择使用“ST-LINK Debugger”右侧的[settings]按钮,调出Target Driver Setup(目标驱动程序设置)窗口。
2.选择[Trace]选项卡。然后将核心时钟调整到正确的频率,在我们的示例中为24Mhz。选择[跟踪启用]。取消选择[EXCTRC:异常跟踪]。单击“确定”
3.选择[项目]->[管理]->[运行时环境],调出管理运行时环境。展开编译器选项并通过DAP选择事件记录器。选择“确定”
4.在项目窗口下找到编译器列表,然后双击“EvenRecorderConf.h”文件。单击EventRecorder.h查看窗口底部的[配置向导]。
5.在配置向导中,展开事件记录器列表,并输入您为设计设置的HCLK频率。24000000赫兹。
6.单击[文本编辑器]选项卡打开EventrecorderConf.h的文本编辑器,使用向导确认EVENT_TIMESTAMP_FREQ的设置已正确更新。保存文件。
代码设置
1.将事件记录器头文件添加到main.c文件的include部分;用户代码之间包含部分。
#包括“EventRecorder.h
如下所示:
2.通过在main()的开头添加以下两行,初始化并启动事件记录器。
EventRecorderInitialize(EventRecordAll,1);
事件记录器开始();
如下所示:
3.使用EventRecorder.c文件中的EventRecord2()函数标记要测量的代码段的开始和结束。我们将在事件中使用标识符值“1”和“2”来分别标记乞讨和结束。一个简单的循环用于对这个练习进行计时。
例如:
/*用户代码开始2*/
事件记录2(0,0,1);
对于(uint32_t idx=0;idx<10000;idx++)
{
__asm(“NOP”);
}
事件记录2(0,0,2);
/*用户代码端2*/
如下所示:
编译和调试项目
1.构建项目,然后选择间谍玻璃来调试应用程序。
分析窗口
1.打开事件记录器的分析窗口。选择[视图][分析窗口],然后选择[事件记录器]。
2.选中事件记录器“启用”框后,选择“启动代码执行”图标按钮。
3.结果应在几分钟内显示,显示标记1和2发生的时间事件。两个事件之间的时间差表示在两个EventRecord2()命令之间执行代码所需的时间。
对于这个例子,找到两个时间事件之间的差异得到2.09730毫秒。
其他信息
有关使用事件记录器的更多详细信息,请访问Keil®的网站:
https://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html