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定时器配置与时间计算公式相关推荐

  1. STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结

    STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...

  2. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  3. STM32定时器配置(TIM1-TIM8)高级定时器+普通定时器,定时计数模式下总结

    文章结构: --> 一.定时器基本介绍 --> 二.普通定时器详细介绍TIM2-TIM5 --> 三.定时器代码实例 一.定时器基本介绍  之前有用过野火的学习板上面讲解很详细,所以 ...

  4. STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结...

    文章结构: --> 一.定时器基本介绍 --> 二.普通定时器详细介绍TIM2-TIM5 --> 三.定时器代码实例 一.定时器基本介绍  之前有用过野火的学习板上面讲解很详细,所以 ...

  5. STM32 定时器 周期 频率 时间 计算

    一:周期 时间 公式:T(溢出时间)=(ARR+1)*(PSC+1)/Tclk  ARR:自动重装载值 PSC:预分频系数 TCLK:时钟频率 例如:Tclk=72MHz ARR=719 PSC=99 ...

  6. STM32定时器配置

    文章目录 前言 一.如何配置定时器频率? 1.芯片手册中获取关键信息 2.用标准库配置定时器 总结 前言 用FreeRTOS内核来检测CPU使用率,需要用一个定时器来记录单片机运行时间.(STM32F ...

  7. STM32F1系列定时器 最大定时时间

    STM32定时器工作原理: 定时器本质上是一个16位计数器(就是TIMx_CNT寄存器),计数器就是一种寄存器,学过数电应该清楚,寄存器必须输入时钟才能工作,该计数器输入时钟频率为72M/(psc+1 ...

  8. STM32 定时器定时计算

    STM32 定时器定时计算 STM32 定时器频率 例子 公式 reference STM32 定时器频率 定时时间 = 定时器频率 / 倍频 /装载周期 htim1.Init.Prescaler = ...

  9. stm32定时器中断的配置步骤

    stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...

  10. 【STM32】高级定时器、通用定时器和基本定时器---配置寄存器产生PWM

    文章目录 1.高级定时器和通用定时器 2.配置产生PWM 1.高级定时器和通用定时器   高级定时器:TIM1.TIM8   Tips:黄色词条为高级定时器相对于通用定时器的功能.   通用定时器:T ...

最新文章

  1. 从0开始的Python学习001快速上手手册
  2. 薪资留人还是情感留人?
  3. python编程从入门到精通 叶维忠 pdf-零基础如何学习python?十本精品python书籍推荐...
  4. 多台服务器通过ssh 无密钥直接登陆主机
  5. OAF_开发系列11_实现OAF通过DataBoundValues动态显示表列的左右对齐
  6. 深度学习Deep learning:四十一(Dropout简单理解)
  7. boost::mp11::mp_drop相关用法的测试程序
  8. 拼多多分享好友砍价Java实现_拼多多砍价怎么分享到朋友圈 砍价发到微信朋友圈方法...
  9. MapReduce计数器
  10. 动态规划 —— 背包问题 P02 —— 完全背包
  11. LeetCode--81. 搜索旋转排序数组Ⅱ(遍历法,二分法)
  12. ddbs mysql_ddbs简介
  13. SQL Server分组查询某最大值的整条数据(包含linq写法)
  14. Docker 架构原理剖析,万字详解!
  15. 计算机网络超详细笔记(五):网络层
  16. Android获取明天日期
  17. 文件服务器磁盘配额管理,文件服务器磁盘配额的管理.doc
  18. 锐目对讲机的使用方法详解
  19. Android 听筒扬声器切换 并且监听音量变化
  20. 对Java.io中一些类的归纳,层次结构图

热门文章

  1. 原创:职场最忌讳的几大“想当然”
  2. html竖版古诗,古诗竖版手抄报版面设计图
  3. HTML+CSS打造简单的横向时间轴
  4. BigDecimal精度丢失处理
  5. QT6程序全屏和隐藏鼠标指针笔记
  6. java8之CompletableFuture
  7. 百度联合哈尔滨发布城市大模型“冰城-百度·文心”, 助力城市智能化建设
  8. Python作业题整理
  9. 用以太坊区块链和jwt token保证Asp.Net Core的API交互安全(上)
  10. Unity灯光烘焙系统