(四)基于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 RecorderEventRecorderInitialize(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.rhkb.cn/news/502036.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 内存溢出(OOM)问题的排查与解决

在 Java 开发中,内存溢出(OutOfMemoryError,简称 OOM)是一个常见且棘手的问题。相比于数组越界、空指针等业务异常,OOM 问题通常更难定位和解决。本文将通过一次线上内存溢出问题的排查过程,分享从问题表现…

Python、R用深度学习神经网络组合预测优化能源消费总量时间序列预测及ARIMA、xgboost对比...

全文链接:https://tecdat.cn/?p38726 分析师:Qingxia Wang 在能源领域,精准预测能源消费总量对制定合理能源战略至关重要。当前,能源消费预测分析主要运用单一模型(如灰色预测法、时间序列分析法等)和组合…

【LLM-Agent】Building effective agents和典型workflows

note Anthropic的工程经验: 大道至简,尽量维护系统的简洁;尽量让过程更加透明(因为你依赖的是LLM的决策,如果只看输出不看过程,很容易陷入难以debug的情况);对LLM需要调用的工具&am…

音视频入门基础:MPEG2-PS专题(4)——FFmpeg源码中,判断某文件是否为PS文件的实现

一、引言 通过FFmpeg命令: ./ffmpeg -i XXX.ps 可以判断出某个文件是否为PS文件: 所以FFmpeg是怎样判断出某个文件是否为PS文件呢?它内部其实是通过mpegps_probe函数来判断的。从《FFmpeg源码:av_probe_input_format3函数和AVI…

CSS——5. 外部样式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>方法3&#xff1a;外部样式</title><link rel"stylesheet" href"a.css" /><link rel"stylesheet" href"b.css"/&g…

lenovo联想IdeaPad 15sIML 2020款(81WB)笔记本电脑原装出厂OEM预装系统Windows10镜像下载

适用机型 &#xff1a;【81WB】 链接&#xff1a;https://pan.baidu.com/s/1SF9uWaNdCKPkwKgsCWb18g?pwdh6qe 提取码&#xff1a;h6qe 联想原厂WIN系统自带所有驱动、带Recovery恢复重置、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想…

WPS表格技巧01-项目管理中的基本功能-计划和每日记录的对应

前言&#xff1a; 在项目管理中&#xff0c;一般就是用些项目管理工具来管理这个任务和 task&#xff0c;但是就是要学这些工具很麻烦&#xff0c;比较好的方法&#xff0c;通用的方法就是用 Excel 表格去做&#xff08;这非常适合松散的团队组织&#xff09;&#xff0c;然后…

《前端web开发-CSS3基础-1》

文章目录 《前端web开发-CSS3基础》1.CSS引入方式2.选择器-标签和类3.选择器-id和通配符选择器4.画盒子5.字体修饰属性6.字体大小、粗细和倾斜6.1字体大小6.2 字体粗细6.3字体倾斜 7.行高8.字体族9.font复合属性10.缩进、对齐和修饰线10.1 文本缩进10.2 文本和图片对齐10.3 文本…

Mac M2基于MySQL 8.4.3搭建(伪)主从集群

前置准备工作 安装MySQL 8.4.3 参考博主之前的文档&#xff0c;在本地Mac安装好MySQL&#xff1a;Mac M2 Pro安装MySQL 8.4.3安装目录&#xff1a;/usr/local/mysql&#xff0c;安装好的MySQL都处于运行状态&#xff0c;需要先停止MySQL服务最快的方式&#xff1a;系统设置 …

网络IP协议

IP&#xff08;Internet Protocol&#xff0c;网际协议&#xff09;是TCP/IP协议族中重要的协议&#xff0c;主要负责将数据包发送给目标主机。IP相当于OSI&#xff08;图1&#xff09;的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…

密钥管理系统在数据安全解决方案中的重要性

密钥管理系统在数据安全解决方案中占据着举足轻重的地位&#xff0c;其重要性体现在以下几个方面&#xff1a;一、保障数据机密性 密钥管理系统通过生成、存储和管理加密密钥&#xff0c;确保了数据的机密性。这些密钥用于加密和解密数据&#xff0c;只有授权用户才能访问和使…

关于PINN进一步的探讨

pinn 是有监督、无监督、半监督&#xff1f; PINN&#xff08;Physics-Informed Neural Networks&#xff0c;物理信息神经网络&#xff09;通常被归类为一种有监督学习的方法。在PINN中&#xff0c;神经网络的训练过程不仅依赖于数据点&#xff08;例如实验观测数据&#xff0…

设计形成从业务特点到设计模式的关联

规范和指引在应用架构、数据架构等各架构方向上形成规范性约束指导。同一个决策要点、架构单元在统一的架构原则指导下&#xff0c;会因业务特点差异有不同的实现&#xff0c;经过总结形成了最佳实践。在开展新应用的设计时&#xff0c;根据决策要点以及相关的业务特点&#xf…

Framebuffer 驱动

实验环境: 正点原子alpha 开发板 调试自己编写的framebuffer 驱动,加载到内核之后,显示出小企鹅 1. Framebufer 总体框架 fbmem.c 作为Framebuffer的核心层,向上提供app使用的接口,向下屏蔽了底层各种硬件的差异; 准确来说fbmem.c 就是一个字符设备驱动框架的程序,对…

STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)

一&#xff1a;步进电机简介 步进电机又称为脉冲电机&#xff0c;简而言之&#xff0c;就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩&#xff0c;步进电机的角位移量与输入的脉冲个数严格成正…

WPS-JS宏快速上手

WPS JS宏注意事项 代码后面可以不写分号“ ; ”&#xff1b; 缩进对程序的运行影响不大&#xff0c;但为了易读&#xff08;防止自己以后看不懂&#xff09;&#xff0c;还是乖乖写好&#xff1b; 代码是逐行运行的&#xff0c;意味着下面一行代码错了&#xff0c;前面的代码…

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤&#xff1a; 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能&#xff08;可选&#xff09;6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具&#xff0c;尤其适合数据科学、机器…

【CVPR 2024】【遥感目标检测】Poly Kernel Inception Network for Remote Sensing Detection

0.论文摘要 摘要 遥感图像&#xff08;RSIs&#xff09;中的目标检测经常面临几个日益增加的挑战&#xff0c;包括目标尺度的巨大变化和不同范围的背景。现有方法试图通过大核卷积或扩张卷积来扩展主干的空间感受野来解决这些挑战。然而&#xff0c;前者通常会引入相当大的背…

C++语言编程————C++的输入与输出

1.面向过程的程序设计和算法 在面向过程的程序设计中&#xff0c;程序设计者必须指定计算机执行的具体步骤&#xff0c;程序设计者不仅要考虑程序要“做什么”&#xff0c;还要解决“怎么做”的问题&#xff0c;根据程序要“做什么”的要求&#xff0c;写出一个个语句&#xff…

Fabric链码部署测试

参考链接&#xff1a;运行 Fabric 应用程序 — Hyperledger Fabric Docs 主文档 (hyperledger-fabric.readthedocs.io) &#xff08;2&#xff09;fabric2.4.3部署运行自己的链码 - 知乎 (zhihu.com) Fabric2.0测试网络部署链码 - 辉哥哥~ - 博客园 (cnblogs.com) 1.启动测试…