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

STM32CubeMX,定时器之定时功能,入门学习,如何设置prescaler,以及timer计算PWM输入捕获方法(重要)

频率变小,周期变长

1,参考链接(重要)

STM32CubeMX——定时器之定时功能(学习使用timer定时器的设置)
STM32测量PWM信息(学习使用设置pwm输入捕获)
通用定时器中两个重要参数的设置心得(TIM_Prescaler、TIM_Period)

2,视频学习

【STM32F030C8T6系列】5. 实验例程——PWM输入实验(重要)
这个视频的里面设置的有点问题:prescaler这里设置的有问题吧,应该是8000-1吧

3,我自己的设置:

在这里插入图片描述

计算的方式很多,我喜欢用这种计算方式,比较直接,当然可以选择下面两种计算方法,这三种计算方法分别在上面的参考链接里。
我的计算(8000/8000 000)*500=0.5s也就是20HZ,也就是支持500ms的周期,一般我们就按照计算的值来作为周期了。
如果我要100hz,也就是10次上报一次,这里不写500-1,写10-1了,也就是10ms,也就是100HZ,也就是我计算可以支持0-100HZ的pwm输入了。当然也可以通过修改预分频率的值。

1选择TIM2
2定时器时钟选择内部时钟
Clock Source(时钟来源)
计数器设置:
Prtscaler (定时器预分频系数) : 31999
Counter Mode(计数模式) : Up(向上计数模式)
Counter Period(自动重装载值) : 499
CKD(时钟分频因子) : No Division 不分频 (可以选择二分频和四分频 )
auto-reload-preload(自动重装载) : Enable 使能
定时器的定时周期
T = (psc+1)(arr+1)/Tclk
psc 为定时器预分频系数
arr为自动重装载值
Tclk为系统时钟频率
通过计算
T = (psc+1)(arr+1)/Tclk=(31999+1)(499+1)/32us=500ms
————————————————

4,其他设置案例详细说明:

A.案例1
主频72MHZ,最大计数次数5000,所以系统的最小采样频率是:2HZ,最大采样频率是72MHZ
一般为了方便中断,我们都是按照计数完成之后再触发,所以采样频率就是2hz,也就是500ms

//对于71MHZ的频率,500ms中断一次,这两个参数设置如下:
TIM_Prescaler=7199; //预分频值
TIM_Period=4999; //下一个更新事件装入活动的自动重装载寄存器周期的值
//分频7200,用72000000/7200=10000Hz
//此时的周期就是1/10000=0.0001s
//500ms=0.0001s*5000次
//5000-1=4999次
//即通过4999次系统的运行,就是500ms
————————————————

B.案例2
在这里插入图片描述

72M的主时钟,7200分频后,单个计数时间是0.0001秒,最大计时长度是0.0001*65535=0.65535秒,所以最小频率不能小于1.5Hz。同时这个分频也影响你对频率测量的精度。

相关文章:

  • 机器学习系列——(十五)随机森林回归
  • 【数据分享】1929-2023年全球站点的逐日平均风速数据(Shp\Excel\免费获取)
  • 搭建macOS开发环境-1:准备工作
  • 2.0 Zookeeper 安装配置
  • 从 F-Droid 安装 termux
  • 回归预测模型:MATLAB多项式回归
  • 深入探究 HTTP 简化:httplib 库介绍
  • MyBatis中#和$符的区别,sql注入问题,动态sql语句
  • 【Java】学习笔记:关于java.sql;
  • STM32 与 ARM 的联系
  • 2024.1.31力扣每日一题——找出不同元素数目差数组
  • Rust函数入门与函数重载
  • 小程序 常用组件
  • SpringCloud-Eureka服务注册中心测试实践
  • Android Studio 安装Flutter插件但是没法创建项目
  • $translatePartialLoader加载失败及解决方式
  • 【347天】每日项目总结系列085(2018.01.18)
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java 内存分配及垃圾回收机制初探
  • leetcode-27. Remove Element
  • leetcode98. Validate Binary Search Tree
  • maven工程打包jar以及java jar命令的classpath使用
  • Median of Two Sorted Arrays
  • php的插入排序,通过双层for循环
  • React as a UI Runtime(五、列表)
  • Spring-boot 启动时碰到的错误
  • vue-loader 源码解析系列之 selector
  • 模型微调
  • 区块链将重新定义世界
  • 微服务入门【系列视频课程】
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一文看透浏览器架构
  • 原生js练习题---第五课
  • 怎样选择前端框架
  • ​iOS实时查看App运行日志
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #预处理和函数的对比以及条件编译
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $L^p$ 调和函数恒为零
  • (175)FPGA门控时钟技术
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (区间dp) (经典例题) 石子合并
  • (十)T检验-第一部分
  • (转)视频码率,帧率和分辨率的联系与区别
  • ******之网络***——物理***
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 材料检测系统崩溃分析
  • .NET大文件上传知识整理
  • .net下的富文本编辑器FCKeditor的配置方法
  • /etc/sudoers (root权限管理)