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。同时这个分频也影响你对频率测量的精度。

相关推荐
AlanBruce44 分钟前
摩尔信使MThings IEC 60870-5-104数据配置使用指南
网络·网络协议·tcp/ip
天空'之城7 小时前
单片机基础核心知识点汇总(三十五)
单片机·嵌入式硬件
secondyoung7 小时前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
sunshine22 girl7 小时前
Java学习二 基本语法2, 算术运算符
java·学习
anew___7 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
菜鸟~noob2338 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
jianqiang.xue9 小时前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
隐擎fox9 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
Zw-awa9 小时前
001-01-从C语言的main到STM32的main-你的代码后来去了哪里
stm32
衡石科技10 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi