当前位置: 首页 > 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进一次捕获中断,多通道输入捕获正常。
http://www.lryc.cn/news/466804.html

相关文章:

  • 群晖通过 Docker 安装 GitLab
  • 1.Node.js环境搭建(windows)
  • 链上相遇,节点之间的悸动与牵连
  • 一些简单的编程题(Java与C语言)
  • java计算机毕设课设—愤怒小鸟游戏(附源码、文章、相关截图、部署视频)
  • 【ARM】MDK-Flex服务管理软件使用说明
  • 【H2O2|全栈】WPS/Office系列有哪些好用的快捷方式?
  • 对比学习)
  • 第十六届蓝桥杯嵌入式真题
  • 音频转码常用命令
  • INNER JOIN、LEFT JOIN 和 RIGHT JOIN有什么区别?什么是自连接?
  • 原型模式具体和直接调用构造函数创建实例的区别
  • MySQL 数据备份与恢复指南
  • NGINX 保护 Web 应用安全之基于 IP 地址的访问
  • 数据结构——顺序表的基本操作
  • 智能去毛刺:2D视觉引导机器人如何重塑制造业未来
  • 计算机系统的层次
  • 一起搭WPF架构之LiveCharts.Wpf的简单了解与安装
  • 深度学习杂乱知识
  • 本地编译运行Thingsboard-gateway之python版本——modbus数据采集
  • 京东笔试题
  • URP学习(一)
  • Linux中修改和查看Redis的内存大小
  • uniapp中的页面跳转
  • Redis|延迟双删策略的优点和缺点是什么?
  • 【计算机网络 - 基础问题】每日 3 题(五十二)
  • LogStash架构分析
  • 2024最新最全【大模型学习路线规划】零基础入门到精通!,大模型学习干货分享,总结的太详细了
  • QT界面开发:图形化设计、资源文件添加
  • 科大讯飞:成本降低 60%,性能提升 10 倍,从 ES Loki 到 Apache Doris 可观测性存储底座升级