总结

本文描述了使用GPIO引脚“EVENT OUT”功能和实验室示波器进行代码执行时间测量所需的步骤。大多数STM32s GPIO可以放置在EVENTOUT的替代功能中。在这种模式下,当CPU执行装配命令“SEV”时,长度等于一个CPU时钟周期的输出脉冲输出到引脚上。

TM32CubeMX设置

在本例中,我们使用STM32L746 Nucleo板。这些指示也可以应用于任何其他STMicroelectronics板。我们使用STM32CubeMX来创建该项目。
1.使用STM32CubeMX创建一个新项目,并在Selector(选择器)窗口中选择MCU零件号。

a.双击STM32L476RGT3零件号开始新项目。

2.在“时钟配置”选项卡下,将HCLK的值调整为24MHz。

  

3.在引脚输出和配置下,选择一个引脚作为EVENTOUT功能。在本例中,选择引脚PC8。

4.在“项目管理器”选项卡下,在项目设置中选择项目位置和项目名称。

5.通过在项目设置中选择“MDK-ARM”,为Keil®选择工具链/IDE。

6.单击[文件],然后选择[保存项目]。

7.接下来选择[生成代码]

代码设置

以下发送事件(SEV)组件代码用于在需要测量的代码之前和之后向PC8引脚发送信号。对于这个例子,创建了一个简单的循环来执行10000个NOP,前后都有一个SEV命令。当试图使用这种方法时,我们也在测试循环之前关闭了代码中的中断,以免干扰循环定时。

 

/*用户代码开始2*/__disable_irq();__反汇编程序(“SEV”);用于(uint32_t idx=0;idx公司<10000;idx++){__反汇编程序(“NOP”);}__反汇编程序(“SEV”);/*用户代码端2*/

后果

执行代码后,在示波器上的引脚PC8处测量来自前方的两个脉冲之间的时间,SEV装配命令。测量的时间约为2.083ms,如下所示。