当前位置: 首页 > article >正文

(四)基于STM32通过Event Recoder实现时间测量功能

目录

1. 了解Event Recorder

2. 硬件和软件准备

硬件需求

软件需求

3. 配置STM32工程

使用STM32CubeMX初始化项目

配置Event Recorder

4. 实现时间记录功能

初始化Event Recorder

时间间隔计算

配置Debug选项

测量结果查看

5总结


在嵌入式系统开发中,精确的时间记录对于调试和性能分析至关重要。STM32系列微控制器结合Event Recorder工具,可以有效地实现时间记录功能。接下来将详细介绍如何在STM32上通过Event Recorder实现时间记录功能。

1. 了解Event Recorder

(一)认识Event Recoder-CSDN博客

(二)Event Recoder在嵌入式开发领域应用_stm32 eventt recorrder-CSDN博客

2. 硬件和软件准备

硬件需求

  • STM32开发板(如STM32F4系列)
  • 调试器(如ST-LINK V2)
  • 连接线和必要的外设

软件需求

  • STM32CubeMX:用于初始化和配置 STM32 外设
  • STM32CubeIDEKeil MDK:集成开发环境(IDE)
  • CMSIS 库:包含 Event Recorder 功能

3. 配置STM32工程

使用STM32CubeMX初始化项目

  1.  见博主之前的博客用CubeMX生成STM32F103C8T6的工程_stm32f100r8t6使用cubemx生成代码-CSDN博客

配置Event Recorder

  1.  见博主之前的博客(三)在Keil工程中创建Event Recoder-CSDN博客

4. 实现时间记录功能

初始化Event Recorder

在生成的代码基础上,初始化Event Recorder。通常在main.c的初始化部分添加相关代码:

包含头文件:

#include "EventRecorder.h"

初始化:

// 初始化Event Recorder

EventRecorderInitialize(EventRecordAll, 1);

EventRecorderEnable();

#include "EventRecorder.h"

int main(void)
{
    // HAL初始化
    HAL_Init();
    
    // 系统时钟配置
    SystemClock_Config();
    
    // 初始化所有外设
    MX_GPIO_Init();
    MX_USART2_UART_Init();
    
    // 初始化Event Recorder
    EventRecorderInitialize(EventRecordAll, 1);
    EventRecorderEnable();
    
    // 主循环
    while (1)
    {
    }
}

时间间隔计算

时间测量功能简单易用,仅需一个起始函数,一个停止函数即可。
当前支持 4 组,每组支持 16 路测量,也就是可以同时测量 64 路。 时间测量的 API 函数支持多任务和中断里面随意调用。

测量起始函数:EventStartG (slot) 或者 EventStartGv (slot, val1, val2)

函数中的字母 G 是表示分组 A,B,C,D,即实际调用函数为 EventStartA,EventStartB,

EventStartC 和 EventStartD。

函数的第一个形参 slot 的范围是 0-15,也就是每个分组可以测试 16 路。

函数后面的两个形象 val1 和 val2 是 32 位变量,用户可以用这两个形参来传递变量数值给 Event

Statistics 调试组件里面,方便图形化展示。简单的说,这两个变量仅仅起到一个传递变量数值

的作用。

测量停止函数:EventStopG (slot) 或者 EventStopGv (slot, val1, val2)

函数中的字母G是表示分组A,B,C,D,即实际调用函数为EventStopA,EventStopB,EventStopC和EventStopD。

函数的第一个形参 slot 的范围是 0-15,也就是每个分组可以测试 16 路。

函数后面的两个形象 val1 和 val2 是 32 位变量,用户可以用这两个形参来传递变量数值给 Event

Statistics 调试组件里面,方便图形化展示。简单的说,这两个变量仅仅起到一个传递变量数值的作用。

这里是用分组 A 的测量通道 0。

EventStartA(0);
测量的代码部分
EventStopA(0);

配置Debug选项

点解keil的Debug按钮,进入Debug模式

设置周期性更新

测量结果查看

显示 Event Statistics 调试组件
查看时间测量结果
微秒的时间单位 us 可能无法正常显示,这个是没有关系的

5总结

通过以上步骤,即可以在STM32微控制器上成功实现基于Event Recorder的时间测量功能。


http://www.kler.cn/a/467582.html

相关文章:

  • Android 绘制学习总结
  • 前端(API)学习笔记(CLASS 4):进阶
  • 125个Docker的常用命令
  • Apache zookeeper集群搭建
  • Python入门教程 —— 模块和包
  • LLM大模型RAG内容安全合规检查
  • Android中创建ViewModel的几种方法
  • 体验谷歌最新Gemini 2.0 Flash原生多模态音视频对话桌面分享功能
  • 数据结构C语言描述7(图文结合)--哈希、哈希冲突、开放地址法、链地址法等实现
  • 阿里云效自动化部署 Docker镜像
  • 电子电气架构 --- 整车整车网络管理浅析
  • 时序数据库对比
  • Vue项目中生成node_modules文件夹的两种常用方法及npm优势
  • 曲速引擎前端代码生成器 6.6.0 介绍二
  • 《计算机网络A》单选题-复习题库解析-3
  • python——对三大语句的补充、对象的内存分配
  • 友元和运算符重载
  • [网络安全]shiro安全框架基本原理
  • RabbitMq的Java项目实践
  • 1、ELK的架构和安装
  • 黑马Java面试教程_P11_技术场景
  • NAT网络技术
  • 基于Node.js + Koa2 + MySQL + TypeScript的应用示例
  • 现代光学基础-3
  • 第十四届蓝桥杯Scratch省赛中级组—智能计价器
  • Linux下shell命令之netstat详解及示例