基于STM32c8t6的5路pwm占空比测量实验总结

2023-11-12

测量方式:
1.
正点原子例程里使用的方式,定时器通道的相关引脚输入捕获上升沿触发中断,在中断函数里,检测到上升沿之后TIM_SetCounter(TIMX,0);将计数器的值置零重新开始计数,同时将定时器中断触发方式切换为下降沿触发,待到下降沿到来时触发中断,在中断函数中用TIM_GetCaptureX(TIMX);获得计数器的值,TIM_GetCapture1,TIM_GetCapture2,TIM_GetCapture3,TIM_GetCapture4,对应Channel1,Channel2,Channel3,Channel4。
由于占空比=高电平时间÷周期时长,所以在获取高电平前要先获取周期时长,方法和获取高电平时间类似,但是在第一次上升沿触发中断后不要切换中断触发方式,直接测量下一次上升沿到来时,两次上升沿之间的时间差。由此便可获得占空比。
2.
使用STM32硬件支持的PWM输入模式。这种方法较为简便,但每个定时器只可测量一路PWM信号,每个定时器上只有Channel1和Channel2可以用来测量PWM。Channel3和Channel4不支持。其中长度IC1(TIMx_CCR1寄存器)和占空比IC2(TIMx_CCR2寄存器)。具体可参考STM32参考手册14.3.6PWM输入模式章节。
3.
可以参考这位前辈的方法:
https://blog.csdn.net/crazy_kismet/article/details/102756206

项目过程中遇到的问题:
1.中断函数里不能使用串口打印函数,否则会造成中断函数里测量的PWM不准确,因为串口打印会占用一部分时间。
2.方法1在切换定时器通道时要将别的通道中断关闭(例如,TIM_ITConfig(TIM3,TIM_IT_CC1,DISABLE);),否则通道之间会占用计数器,造成读取的值的紊乱。
3.不能像TIM3_ICInitStructure.TIM_Channel = TIM_Channel_3|TIM_Channel_1|TIM_Channel_4|;这样子去同时初始化几个通道,只能一个一个初始化,否则会出现错误。
4.TIM_IT_CC1,TIM_IT_CC2,TIM_IT_CC3,TIM_IT_CC4;(通道输入捕获中断)
TIM_GetCapture1(TIMX);TIM_GetCapture2(TIMX);TIM_GetCapture3(TIMX);TIM_GetCapture4(TIMX);(获得计数器值)
TIM_OC1PolarityConfig(TIMX,TIM_ICPolarity_Rising);TIM_OC2PolarityConfig(TIMX,TIM_ICPolarity_Rising);TIM_OC3PolarityConfig(TIMX,TIM_ICPolarity_Falling);TIM_OC4PolarityConfig(TIMX,TIM_ICPolarity_Falling);(设置上升沿,或下降沿触发输入捕获中断)

代码在此:https://download.csdn.net/download/q245629111/13056057
如果实在没积分下载可以联系邮箱245629111@qq.com我发给你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于STM32c8t6的5路pwm占空比测量实验总结 的相关文章

  • es 更新延迟

    es在更新之后并不是立即可见 可查询 的 会有1s的延迟 可以通过设置refresh interval参数来修改刷新的间隔 但是在实际应用中 1s的延迟已经算是很久了 在java high level client中 为index inse
  • MiniUI 的知识积累

    1 默认选中树的根节点 var tree mini get tree 1 tree selectNode tree getRootNode children 0 2 表格修改列头名称 div class mini fit div class
  • novel Ai (stable-diffusion-webui)安装

    关于novel ai的本地化安装 环境 英伟达显卡 win11 可以连接github并下载内容 安装 python 3 10 6及以上 安装并添加到path 安装cuDNN和CUDAToolKit 先更新主机的显卡驱动 检查系统的显卡驱动版
  • Java如何进行内存分配

    Java 虚拟机 JVM 负责管理 Java 应用程序的内存 在 Java 中 内存被划分为不同的区域 每个区域都有不同的用途 Java 中有两种主要的内存区域 堆和栈 功能 1 堆 堆是存储所有对象实例的内存区域 所有对象实例都存储在堆中

随机推荐

  • React之中的styled-components

    在react之中使用css不像vue之中那么方便 react官方也没有很统一的用法 下面是有关于styled component的使用 1 安装库 yarn add styled components 2 基本使用 在其中styled di
  • 深度学习中的epoch,batchsize,iteration都是什么?

    转载 https www jianshu com p e5076a56946c 一切的一切 要从机器学习中的梯度下降法说起 首先让我们来回顾一下这个常见的不能再常见的算法 梯度下降法是机器学习中经典的优化算法之一 用于寻求一个曲线的最小值
  • wxWidgets with quick-x

    前言 OSX下 Qt5 所生成应用包的大小有七八十兆大小 单独一个 debug 版本的可执行程序都有 15 7MB 再加上 QtCore QtGui QtOpenGL 等 framework 包大小分分钟上来 曾经发布过的 Qt5 2 qu
  • 微信公众号实现“一键关注”功能

    背景 之前用的一键关注要么通过图文 要么通过二维码 这样甚是麻烦 而且引导不到位 而看到朋友圈打广告的一些公众号可以直接关注 于是一直研究这个功能 今天终于实现了 分享给所有朋友 希望能帮助到所有朋友 这个引导关注的页面包含了公众号的log
  • 密码学之哈希算法

    1 哈希算法 哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值 这个小的二进制值称为哈希值 哈希值是一段数据唯一且极其紧凑的数值表示形式 如果散列一段明文而且哪怕只更改该段落的一个字母 随后的哈希都将产生不同的值 要找到散列为同
  • 滑动关机BAT脚本

    滑动关机脚本 1 脚本功能 增加一个一键关机的功能 点击这个按钮 即可滑动关闭电脑 非常酷炫好用 2 脚本内容 slidetoshutdown 3 使用方式 新建slideDown bat文件 编辑 把上面的脚本内容粘贴进去 然后双击执行s
  • MySQL(十三):分区表( Partitioning Table)

    文章目录 1 MySQL 分区简介 1 1 什么是分区表 1 2 分区表优点 1 3 分区表缺点 2 MySQL 分区类型 2 1 范围分区 RANGE 2 1 1 基于时间间隔的分区方案 2 1 1 1 按 RANGE 对表进行分区 2
  • Maven项目版本定义

    Maven使用占位符实现一处定义项目版本 使用 revision 定义整个项目的版本 方便修改 父pom
  • Java实现杨辉三角

    代码实现 package day01 public class yanghui public static void main String args 声明二维数组并初始化 int yanghui new int 10 给二维数组赋值 fo
  • jsp 新能源汽车论坛网Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一 源码特点 JSP 新能源汽车论坛网是一套完善的java web信息管理系统 对理解JSP java编程开发语言有帮助 系统具有完整的源代码和数据库 系统主要采用B S模式开发 开发环境为 TOMCAT7 0 Myeclipse8 5开发
  • 《如何为Android Studio安装HAXM》

    注意 当你在Android studio直接下载sdk和HAXM一些安卓环境依赖的文件时 会出现haxm文件已经下载 但未安装 导致启动avd模拟器不成功 如下图 emulator64 x86 avd 32 QVGA ADP2 API 25
  • Python爬虫实战——搭建自己的IP代理池

    如今爬虫越来越多 一些网站网站加强反爬措施 其中最为常见的就是限制IP 对于爬虫爱好者来说 能有一个属于自己的IP代理池 在爬虫的道路上会减少很多麻烦 环境参数 工具 详情 服务器 Ubuntu 编辑器 Pycharm 第三方库 reque
  • sql增删改查_Zhuo笔记:使用C#链接SQL数据库并进行增删改查操作

    一 首先使用SQL语句在建立数据库及表 二 在C 中做一个简单窗口以便对SQL数据库进行操作 三 编写代码进行SQL链接 1 C 访问SQL SERVER首先需要引用using System Data 和usingSystem Data S
  • 芯片IO口Driving能力(Sourcing Current)测试方法

    PMOS管测试步骤 Drive High Ability 1 将IO PAD配置成output模式 DUT供电电压为可正常工作的最低电压 如依datasheet允许 下降10 3 3V gt 2 97V 等 2 将IO PAD配置成最大Dr
  • 图文详解GPT-4最强对手Claude2的使用方法

    大家好 我是herosunly 985院校硕士毕业 现担任算法研究员一职 热衷于机器学习算法研究与应用 曾获得阿里云天池比赛第一名 CCF比赛第二名 科大讯飞比赛第三名 拥有多项发明专利 对机器学习和深度学习拥有自己独到的见解 曾经辅导过若
  • 基于粒子群算法优化LSTM的多输入单输出台风风电功率预测

    基于粒子群算法优化LSTM的多输入单输出台风风电功率预测 随着风电产业的快速发展 风电场的管理和运行越来越依赖于准确的风速信息和风力预测 因此 台风风电功率预测的研究变得越来越重要 在本文中 我们将使用粒子群算法 PSO 来优化长短期记忆网
  • spring-boot项目使用ulisesbocchio对配置文件敏感信息加密

    参考文献github官网地址 https github com ulisesbocchio jasypt spring boot 1 添加依赖 maven
  • kiel5编译报错error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.

    原因是startup xxx s文件只能保留其中一种 启动文件分别带有hd md ld和cl vl xl几种种字样 需要查看mcu的flash内存大小来选择 cl 互联型产品 stm32f105 107系列 vl 超值型产品 stm32f1
  • 世界各国英文简写一览表

    整理了一份世界各国英文简写表 供大家参考 country cName country code country eName 中国 CN China 中国台湾 W aiwan 中国澳门 MO Macao 中非共和国 CF he Central
  • 基于STM32c8t6的5路pwm占空比测量实验总结

    测量方式 1 正点原子例程里使用的方式 定时器通道的相关引脚输入捕获上升沿触发中断 在中断函数里 检测到上升沿之后TIM SetCounter TIMX 0 将计数器的值置零重新开始计数 同时将定时器中断触发方式切换为下降沿触发 待到下降沿