stm32定时器配置与时间计算公式
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //时钟使能TIM_TimeBaseStructure.TIM_Period = 5000-1; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_Pulse = 1000;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低TIM_OC4Init(TIM4, & TIM_OCInitStructure); //初始化外设TIM4 !!!!!TIM_Cmd(TIM4, ENABLE); //使能TIMxTIM_CtrlPWMOutputs(TIM4, ENABLE);
Tout = ((arr+1)*(psc+1))/Tclk ;
其中:
Tclk:定时器的输入时钟频率(单位MHZ)
Tout:定时器溢出时间(单位为us)
.TIM_Period = arr; eg;4999
.TIM_Prescaler = psc; eg:7199
Tout = ((4999+1)×(7199+1))/72 = 500000us = 500ms /*
* 初始化定时器的时候指定我们分频系数psc,这里是将我们的系统时钟(72MHz)进行分频
* 然后指定重装载值arr,这个重装载值的意思就是当 我们的定时器的计数值 达到这个arr时,定时器就会重新装载其他值.
例如当我们设置定时器为向上计数时,定时器计数的值等于arr之后就会被清0重新计数
* 定时器计数的值被重装载一次被就是一个更新(Update)
* 计算Update时间公式
Tout = ((arr+1)*(psc+1))/Tclk
公式推导详解:
Tclk是定时器时钟源,在这里就是72Mhz
我们将分配的时钟进行分频,指定分频值为psc,就将我们的Tclk分了psc+1,我们定时器的最终频率就是Tclk/(psc+1) MHz
这里的频率的意思就是1s中记 Tclk/(psc+1)M个数 (1M=10的6次方) ,每记一个数的时间为(psc+1)/Tclk ,很好理解频率的倒数是周期,这里每一个数的周期就是(psc+1)/Tclk 秒
然后我们从0记到arr 就是 (arr+1)*(psc+1)/Tclk
举例:比如我们设置arr=7199,psc=9999
我们将72MHz (1M等于10的6次方) 分成了(9999+1)等于 7200Hz
每记录一个数就是1/7200秒
定时器更新(7199+1)*(1/7200)=1s,也就是1s进入一次更新
stm32定时器配置与时间计算公式相关推荐
- STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结
STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...
- STM32定时器中断显示时间
前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...
- STM32定时器配置(TIM1-TIM8)高级定时器+普通定时器,定时计数模式下总结
文章结构: --> 一.定时器基本介绍 --> 二.普通定时器详细介绍TIM2-TIM5 --> 三.定时器代码实例 一.定时器基本介绍 之前有用过野火的学习板上面讲解很详细,所以 ...
- STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结...
文章结构: --> 一.定时器基本介绍 --> 二.普通定时器详细介绍TIM2-TIM5 --> 三.定时器代码实例 一.定时器基本介绍 之前有用过野火的学习板上面讲解很详细,所以 ...
- STM32 定时器 周期 频率 时间 计算
一:周期 时间 公式:T(溢出时间)=(ARR+1)*(PSC+1)/Tclk ARR:自动重装载值 PSC:预分频系数 TCLK:时钟频率 例如:Tclk=72MHz ARR=719 PSC=99 ...
- STM32定时器配置
文章目录 前言 一.如何配置定时器频率? 1.芯片手册中获取关键信息 2.用标准库配置定时器 总结 前言 用FreeRTOS内核来检测CPU使用率,需要用一个定时器来记录单片机运行时间.(STM32F ...
- STM32F1系列定时器 最大定时时间
STM32定时器工作原理: 定时器本质上是一个16位计数器(就是TIMx_CNT寄存器),计数器就是一种寄存器,学过数电应该清楚,寄存器必须输入时钟才能工作,该计数器输入时钟频率为72M/(psc+1 ...
- STM32 定时器定时计算
STM32 定时器定时计算 STM32 定时器频率 例子 公式 reference STM32 定时器频率 定时时间 = 定时器频率 / 倍频 /装载周期 htim1.Init.Prescaler = ...
- stm32定时器中断的配置步骤
stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...
- 【STM32】高级定时器、通用定时器和基本定时器---配置寄存器产生PWM
文章目录 1.高级定时器和通用定时器 2.配置产生PWM 1.高级定时器和通用定时器 高级定时器:TIM1.TIM8 Tips:黄色词条为高级定时器相对于通用定时器的功能. 通用定时器:T ...
最新文章
- 从0开始的Python学习001快速上手手册
- 薪资留人还是情感留人?
- python编程从入门到精通 叶维忠 pdf-零基础如何学习python?十本精品python书籍推荐...
- 多台服务器通过ssh 无密钥直接登陆主机
- OAF_开发系列11_实现OAF通过DataBoundValues动态显示表列的左右对齐
- 深度学习Deep learning:四十一(Dropout简单理解)
- boost::mp11::mp_drop相关用法的测试程序
- 拼多多分享好友砍价Java实现_拼多多砍价怎么分享到朋友圈 砍价发到微信朋友圈方法...
- MapReduce计数器
- 动态规划 —— 背包问题 P02 —— 完全背包
- LeetCode--81. 搜索旋转排序数组Ⅱ(遍历法,二分法)
- ddbs mysql_ddbs简介
- SQL Server分组查询某最大值的整条数据(包含linq写法)
- Docker 架构原理剖析,万字详解!
- 计算机网络超详细笔记(五):网络层
- Android获取明天日期
- 文件服务器磁盘配额管理,文件服务器磁盘配额的管理.doc
- 锐目对讲机的使用方法详解
- Android 听筒扬声器切换 并且监听音量变化
- 对Java.io中一些类的归纳,层次结构图