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

STM32F407ZGT6定时器相关测试

结论:

  1. 20us以下的IO翻转操作,存在误差
  2. 输出比较定时器使能与禁用功能正常
  3. 输入捕获定时器使能与禁用功能正常
  4. 单通道输出比较、输入捕获均正常
  5. 多通道输出比较波形无干扰,但仍是存在20us以下的IO翻转操作存在误差
  6. 多通道输入捕获正常

一、单一通道基本功能测试(TIM5、CHANNEL1)

1、精度与定时器赋时长操作测试(TIM5、CHANNEL1)

  • 测试方法: 在输出比较定时器的测试中断HAL_TIM_OC_DelayElapsedCallback中进行IO翻转和TimerSetNextTimeValue_FB(定时器重新赋时长:6us、10us交替赋值)操作。

预期结果: 产生周期为16us,占空比为62.5%的波形

实际结果: 周期 22us ,占空比:58.18%
在这里插入图片描述
结论: 误差过大,精度达不到,波形不准确

  • 测试方法:在输出比较定时器的测试中断HAL_TIM_OC_DelayElapsedCallback中进行IO翻转和TimerSetNextTimeValue_FB(定时器重新赋时长:24us、40us交替赋值)操作。

预期结果: 产生周期为64us,占空比为62.5的波形。

实际结果: 周期:64us,占空比:62.5%
在这里插入图片描述
结论: 占空比正确,周期正确,通过对比可知,当翻转速度过快,例如进入10us以下的级别,会出现误差导致波形不准。

2、使能/关闭测试(TIM5、CHANNEL1)(TIM3、CHANNEL2)

  • 测试方法: 在测试中断600us定时器中断中进行IO翻转,在600us定时器中断中对600us定时器中断进行禁用操作(每执行7个600us定时器中断禁用自身一次,其它时刻不进行中断禁用与使能操作)。在10ms中断中对600us定时器中断进行使能操作,并禁用10ms中断,即只执行一次。
    在这里插入图片描述
    结论: 使能与禁用功能均正常。

3、单通道输入捕获功能测试(TIM3、CHANNEL1)

  • 测试方法: 单通道下降沿输入捕获对PWM测量进行验证(TIM5、CHANNEL1输出周期8ms,占空比为50%的PWM波;TIM3、CHANNEL1进行下降沿捕获)。
    TIM5、CHANNEL1输出的PWM波形
    占空比:50%
    周期:8ms
    在这里插入图片描述
    TIM3、CHANNEL1捕获中断中打印输出:
    在这里插入图片描述
    结论: 每两次捕获之间间隔8ms,输入捕获中断正常

  • 测试方法: 基于以上实验,在第50次捕获关闭输入捕获中断

测试结果:
在这里插入图片描述

对应接口: Capture_FA_Disable();//关断输入捕获
结论: 中断在第50次停止,输入捕获关闭函数正常

  • 测试方法: 单通道下降沿输入捕获对PWM测量进行验证(TIM5、CHANNEL1输出周期16ms,占空比为62.5%的PWM波;TIM3、CHANNEL1进行双边沿捕获)。

TIM5、CHANNEL1输出的PWM波形:
占空比:62.5%

周期:16ms
在这里插入图片描述
TIM3、CHANNEL1捕获中断中打印输出:
在这里插入图片描述
结论: 每两次捕获中断间隔分别是6ms、10ms,来回转变,总体上基本正常,但有几次存在1ms的误差

二、多通道干扰测试(TIM5、CHANNEL1)(TIM3、CHANNEL2)

1、输出比较定时器

  • 测试方法: 使能两路定时器中断通道,定时器中断周期分别为6us100us。在中断中分别对不同IO进行翻转,观察两中断同时触发时的相互影响。
    在这里插入图片描述
    结论: 看起来没啥问题,波形挺正常,除了6us级别的翻转有些误差

2、输入捕获定时器

  • 测试方法: 由TIM5、CHANNEL1产生周期为8ms,占空比为50%的PWM波,双通道(TIM3、CHANNEL1)(TIM14、CHANNEL1)输入捕获对PWM进行测量。
    TIM5、CHANNEL1输出的PWM波形:
    占空比:50%
    周期:8ms
    在这里插入图片描述
    TIM3、CHANNEL1捕获中断中打印输出:(上升沿捕获):
    在这里插入图片描述
    TIM14、CHANNEL1捕获中断中打印输出:(上升沿捕获):
    在这里插入图片描述
    结论: 每8ms进一次捕获中断,多通道输入捕获正常。

相关文章:

STM32F407ZGT6定时器相关测试

结论: 20us以下的IO翻转操作,存在误差输出比较定时器使能与禁用功能正常输入捕获定时器使能与禁用功能正常单通道输出比较、输入捕获均正常多通道输出比较波形无干扰,但仍是存在20us以下的IO翻转操作存在误差多通道输入捕获正常 一、单一通…...

群晖通过 Docker 安装 GitLab

Docker 配置容器步骤都是大同小异的,可以参考: 群晖通过 Docker 安装 Gitea-CSDN博客 1. 在 Docker 文件夹中创建 GitLab,并创建子文件夹 2. 设置权限 3. 打开 Docker 应用,并在注册表搜索 gitlab-ce 4. 选择 gitlab-ce 映像运行…...

1.Node.js环境搭建(windows)

一、环境搭建(windows) 1.1下载并安装 https://nodejs.org/dist/v18.20.4/node-v18.20.4-x64.msi1.2测试和查看版本 #cmd命令 node -v输出: #能正确输出版本号,说明安装成功 v18.20.41.3使用nodejs启动第一个js #hello.js console.log(hello world!…...

链上相遇,节点之间的悸动与牵连

公主请阅 1. 返回倒数第 k 个节点1.1 题目说明1.2 题目分析1.3 解法一代码以及解释1.3 解法二代码以及解释 2.相交链表2.1 题目说明示例 1示例 2示例 3 2.2 题目分析2.3 代码部分2.4 代码分析 1. 返回倒数第 k 个节点 题目传送门 1.1 题目说明 题目名称: 面试题 02…...

一些简单的编程题(Java与C语言)

引言: 这篇文章呢,小编将会举一些简单的编程题用来帮助大家理解一下Java代码,并且与C语言做个对比,不过这篇文章所出现的题目小编不会向随缘解题系列里面那样详细的讲解每一到题,本篇文章的主要目的是帮助小编和读者们…...

java计算机毕设课设—愤怒小鸟游戏(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式再最下方 java计算机毕设课设—愤怒小鸟游戏(附源码、文章、相关截图、部署视频) 基于Java的愤怒小鸟游戏,我们不仅复刻了原版游戏的核心玩法,还增加了一些创新元素。游戏以2D图形界面呈现,玩家需要…...

【ARM】MDK-Flex服务管理软件使用说明

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录MDK网络版部署工具Imtools.exe 的各个界面中相关配置的功能说明 2、 问题场景 解决客户咨询,该服务管理软件如何使用,为客户使用服务管理软件后期自行维护增加一定指导作用。 3、软硬件环…...

【H2O2|全栈】WPS/Office系列有哪些好用的快捷方式?

目录 WPS/Office 前言 准备工作 Office通用快捷键 PPT快捷键 Excel快捷键 Word快捷键 结束语 WPS/Office 前言 本章节属于前端前置知识,即使不学习前端,在工作中掌握常见的WPS/Office办公技能也是十分重要的。在本篇中,我将会分享常…...

对比学习)

目录 概念 数据增强 损失函数 NCE(noise contrastive estimation) Info NCE CV上的发展 InstDisc InvaSpread CPC CMC MoCo simCLR MoCo v2 SimCLR v2 SwAV BYOL SimSiam MoCo v3 DiNO 概念 通过利用样本之间的相似性和不相似性&…...

第十六届蓝桥杯嵌入式真题

蓝桥杯嵌入式第十二届省赛真题二 蓝桥杯嵌入式第十三届省赛真题一 蓝桥杯嵌入式第十三届省赛真题二 蓝桥杯嵌入式第十四届省赛真题 蓝桥杯嵌入式第十四届模拟考试一 蓝桥杯嵌入式第十四届模拟考试二 蓝桥杯嵌入式第十五届模拟考试一 蓝桥杯嵌入式第十五届模拟考试二 蓝…...

音频转码常用命令

1.转码为wav8k16bit -v提高音量 pitch调高音调 speed调整语速 sox -v 2.0 input.wav -r 8000 output.wav pitch 50 speed 1.05 sox input.wav -r 8000 output.wav 只是转码,不提高音调语速 压缩文件:zip -r filename.zip file1 file2 file3 2.批量转…...

INNER JOIN、LEFT JOIN 和 RIGHT JOIN有什么区别?什么是自连接?

INNER JOIN、LEFT JOIN 和 RIGHT JOIN 都是多表连接的不同方式,它们的主要区别在于它们如何处理表之间不匹配的数据。下面分别介绍它们的区别。 目录 一.多表连接查询 INNER JOIN(内连接) LEFT JOIN(左连接) RIGHT…...

原型模式具体和直接调用构造函数创建实例的区别

原型模式与直接调用构造函数创建实例的区别主要在于创建对象的方式和使用场景。让我们一步一步来理解。 直接调用构造函数创建实例 这是我们通常使用的创建对象的方法。通过调用类的构造函数,传入必要的参数来初始化对象。每次都要通过构造函数为对象设置所有初始值…...

MySQL 数据备份与恢复指南

本文将介绍如何通过命令行对 MySQL 数据库进行备份与恢复操作,适用于日常开发和生产环境中的数据管理需求。 1. MySQL 数据备份 MySQL 提供了 mysqldump 工具来执行数据库的备份操作,可以备份单个数据库、多个数据库或整个数据库实例。 1.1 备份单个数…...

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问: location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…...

数据结构——顺序表的基本操作

前言 介绍 🍃数据结构专区:数据结构 参考 该部分知识参考于《数据结构(C语言版 第2版)》24~28页 补充 此处的顺序表创建是课本中采用了定义方法为SqList Q来创建,并没有使用顺序表指针的方法,具体两个…...

智能去毛刺:2D视觉引导机器人如何重塑制造业未来

机器人技术已经深入到各个工业领域中,为制造业带来了前所未有的变革。其中,2D视觉引导机器人技术以其精准、高效的特点,在去毛刺工艺中发挥着越来越重要的作用。本文将为您介绍2D视觉引导机器人技术的基本原理及其在去毛刺工艺中的应用&#…...

计算机系统的层次

目录 计算机系统的层次ISA(指令集体系结构) 计算机系统的层次 计算机硬件是基础指令集体系结构:将硬件的功能封装从指令供软件使用操作系统:提供人机交互界面、提供服务功能的内核例程语言处理系统: 语言处理程序&…...

一起搭WPF架构之LiveCharts.Wpf的简单了解与安装

一起搭WPF架构之LiveCharts.Wpf的简单了解与安装 前言LiveCharts.Wpf介绍LiveCharts.Wpf的安装总结 前言 根据项目需求,我单独留了一个界面用于进行数据分析。数据分析的内容考虑是采用图表的形式将SQLite数据库中存储的数据进行绘制成图,以便数据分析。…...

深度学习杂乱知识

阿达玛乘积(Hadamard Product)详解 1. 定义: 阿达玛乘积(Hadamard Product),又称为元素乘积或逐元素乘积,是指对两个维度相同的矩阵进行逐元素相乘的操作。 假设我们有两个维度相同的矩阵 ( …...

本地编译运行Thingsboard-gateway之python版本——modbus数据采集

1、ideal 我用的是2020版本,这个关系不大,随便 Thingsboard-gateway之python版本源码拉取(老版本是java写的,新版都是python写的) 地址:git clone https://github.com/thingsboard/thingsboard-gateway.git…...

京东笔试题

和谐敏感词 🔗 题目地址 🎉 模拟 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();String s scanner.next();String[] words new String[…...

URP学习(一)

URP是unity出的比较简单的可供改造引擎渲染管线的流程。能实现用较低的代价消耗实现较好的效果。 现记录学习: 一.如何设置URP关键 这步结束后材质会被替换 加package Create/Rendering/URP Universal Rendering Setting设置为urp 材质也需要urp目录下的 几种…...

Linux中修改和查看Redis的内存大小

目录 一:修改redis内存大小1. 编辑配置文件2. 在命令行修改 二:查看redis内存大小1. get maxmemory2. info memory 一:修改redis内存大小 1. 编辑配置文件 sudo vim /etc/redis/redis.conf maxmemory 300MB1、Redis可用内存大小只能是整数&…...

uniapp中的页面跳转

1. uni.navigateTo用于跳转到应用内的某个非tabBar页面,并且会保留当前页面,将其推入页面栈中。 uni.navigateTo({url: path/to/page // 替换为你要跳转的页面路径 }); 2. uni.redirectTo 用于关闭当前页面,重定向到应用内的某个非tabBar页面…...

Redis|延迟双删策略的优点和缺点是什么?

延迟双删策略是什么? 延迟双删策略是一种保证缓存与数据库数据一致性的方法,特别适用于高并发场景下的缓存更新。其核心思想是:在更新数据库时,不仅删除一次缓存,还在短时间后再进行一次延迟删除,以避免并…...

【计算机网络 - 基础问题】每日 3 题(五十二)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…...

LogStash架构分析

一、什么是LogStash LogStash 是一个类似实时流水线的开源数据传输引擎,它像一个两头连接不同数据源的数据传输管道,将数据实时地从一个数据源传输到另一个数据源中。在数据传输的过程中,LogStash 还可以对数据进行清洗、加工和整理&#xf…...

2024最新最全【大模型学习路线规划】零基础入门到精通!,大模型学习干货分享,总结的太详细了

第一阶段:基础理论入门 目标:了解大模型的基本概念和背景。 内容: 人工智能演进与大模型兴起。 大模型定义及通用人工智能定义。 GPT模型的发展历程。 第二阶段:核心技术解析 目标:深入学习大模型的关键技术和工…...

QT界面开发:图形化设计、资源文件添加

设计界面介绍 此时我们创建项目时就可以选择添加UI选项了。 添加完之后,我们可以看到,文件中多出了一个存放界面文件的目录,下面有个.ui的界面文件。甚至pro的项目文件中也会添加一项内容。 我们点击界面文件中的.ui文件,我们可以…...