安博体育
联系我们
安博
联系电话:15062200231
Email:yin_zhiping@qdsy-sensor.cn

stm32f103定时器STM32F103的11个定时器详解

来源:安博体育    发布时间:2024-03-26 03:17:58

STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核...

发送询盘即时聊天

  STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。

  这篇文章主要谈谈STM32F103的11个定时器的详细介绍,一起来了解一下。

  STM32F103系列的单片机一共有11个定时器,其中:2个高级定时器、4个普通定时器、2个基本定时器、2个看门狗定时器、1个系统嘀嗒定时器。

  8个定时器分成3个组;TIM1和TIM8是高级定时器、TIM2-TIM5是通用定时器、TIM6和TIM7是基本的定时器,这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式。计数器三种计数模式

  向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时 向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时 中央对齐模式:从0开始向上计数,计到arr产生溢出事件,然后向下计数,计数到1以后,又产生溢出,然后再从0开始向上计数。(此种技术方法也可叫向上/向下计数)

  基本定时器(TIM6,TIM7)的基本功能: 只有最基本的定时功能,。基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。

  通用定时器(TIM2~TIM5)的基本功能: 除了基本的定时器的功能外,还具有测量输入信号的脉冲长度( 输入捕获) 或者产生输出波形( 输出比较和PWM)。

  高级定时器(TIM1,TIM8)的基本功能: 高级定时器不但具有基本,通用定时器的所有的功能,还具有控制交直流电动机所有的功能,你比如它可以输出6路互补带死区的信号,刹车功能等等。

  通用定时器的时钟来源; a:内部时钟(CK_INT);b:外部时钟模式1:外部输入脚(TIx);c:外部时钟模式2:外部触发输入(ETR);d:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器。通用定时期内部时钟的产生:

  从截图能够正常的看到通用定时器(TIM2-7)的时钟不是直接来自APB1,而是通过APB1的预分频器以后才到达定时器模块。

  当APB1的预分频器系数为1时,这个倍频器就不起作用了,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1时钟频率的两倍。

  以PWM模式2,定时器3向上计数,有效电平是高电平,定时器3的第3个PWM通道为例:

  定时器3的第3个PWM通道对应是PB0这引脚,三角顶点的值就是TIM3_ARR寄存器的值,上图这条红线_CNT)刚开始计数的时候是小于捕获/比较寄存器(TIM3_CCR3)的值,此时PB0输出低电平,随着计数器(TIM3_CNT)值慢慢的增加。

  当计数器(TIM3_CNT)大于捕获/比较寄存器(TIM3_CCR3)的值时,这时PB0电平就会翻转,输出高电平,计数器(TIM3_CNT)的值继续增加,

  当TIM3_CNT=TIM3_ARR的值时,TIM3_CNT重新再回到0继续计数,PB0电平翻转,输出低电平,此时一个完整的PWM信号就诞生了。PWM输出模式

  模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。区别如下:

  111:PWM模式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。 由以上可知:

  模式1和模式2正好互补,互为相反,所以在运用起来差别也并不太大。而从计数模式上来看,PWM也和TIMx在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式

  PWM的输出管脚:不同的TIMx输出的引脚是不同(此处设计管脚重映射) TIM3复用功能重映射:注:重映射是为了PCB的设计方便。值得一提的是,其分为部分映射和全部映射

  PWM输出频率的计算:PWM输出的是一个方波信号,信号的频率是由TIMx的时钟频率和TIMx_ARR这个寄存器所决定的;输出信号的占空比则是由TIMx_CRRx寄存器确: 占空比=(TIMx_CRRx/TIMx_ARR)*100% PWM频率的计算公式为:

  其中F就是PWM输出的频率,单位是:HZ; ARR就是自动重装载寄存器(TIMx_ARR); PSC 就是预分频器(TIMx_PSC); 72M就是系统的频率;STM32 高级定时器PWM的输出。一路带死区时间的互补PWM的波形图

  STM32F103VC这款单片机一共有2个高级定时器TIM1和TIM8,这2个高级定时器都可以同时产生3路互补带死区时间的PWM信号和一路单独的PWM信号,具有刹车输入功能,在紧急的情况下这个刹车功能能切断PWM信号的输出 还具有支持针对定位的增量(正交)编码器和霍尔传感器电路。

  高级控制定时器(TIM1 和TIM8) 由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动,它适合多种用途,包含测量输入信号的脉冲宽度( 输入捕获) ,或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。

  使用定时器预分频器和RCC时钟控制预分频器,能轻松实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器(TIM1 和TIM8) 和通用定时器(TIMx) 是完全独立的,它们不共享任何资源。死区时间

  H桥电路为避免由于关断延迟效应造成上下桥臂直通,有必要设置死区时间,死区时间可有效地避免延迟效应所造成的一个桥臂未完全关断,而另一桥臂又处于导通状态,避免直通炸开关管。

  死区时间越大,电路的工作也就越可靠,但会带来输出波形的失真以及降低输出效率。 死区时间小,输出波形要好一些,但是会降低系统的可靠性,一般这个死区时间设置为us级。

  元器件死区时间是不能改变的,它主要是取决于元器件的制作流程与工艺和材料!原则上死区时间当然越小越好。设置死区时间的目的,其实说白了就为了电路的安全。最佳的设置方法是:在保证安全的前提下,设置的死区时间越小越好。以不炸功率管、输出不短路为目的。STM32死区时间探究

  设置寄存器:就是刹车和死区控制寄存器(TIMx_BDTR),这个寄存器的第0—7位,这8个位就是用来设置死区时间的,使用如下:

  系统时钟-》 AHB预分频 -》 APB2预分频 –》 TIM1倍频器–》 产生TIM1的时钟系统

  流程图看能够准确的看出,要想知道TIM1的时钟,就的知道系统时钟,AHB预分频器的值,还有APB2预分频器的值,只要知道了这几个值,即可算出TIM1的时钟频率?

  这些值从何来,在“SystemInit()”这个时钟的初始化函数中已经给我们答案了,在这个函数中设置的系统时钟是72MZ,AHB预分频器和APB2预分频器值都是设置为1,由此可算出:TIM1时钟频率:

  有了这个值,然后通过公式DT=DTG[6:0]×Tdtg即可计算出DT的值。

  如果你的项目需要输出的PWM信号要求的死区时间是0——1764ns的时候你就可以用公式1

  假如我们设计了一个项目要求输出的PWM信号中加入一个3us的死区时间因为3us这个值在第二个公式决定的死区范围以内所以最终选择第二个公式。3000/(13.89*2)=108, 所以DTG[5:0]=108-64=44

  关键字:引用地址:stm32f103定时器,STM32F103的11个定时器详解上一篇:

  看门狗定时器WDT(Watch Dog Timer),俗称看门狗,是微控制器运作时的状态的监控系统,在微控制器内部程序跑飞后,微控制器的控制功能将进入混乱状态,这样一个时间段看门狗将复位微控制器,重启系统控制,避免产生不可预料的后果。 MSP430内部集成了16位的看门狗定时器,在需要看门狗的应用中,该定时器可当作看门狗使用;在一些不需要看门狗的设计中,看门狗定时器可以配置为普通定时器使用,最大化利用片上资源。 看门狗定时器的配置主要由**看门狗控制寄存器(WDTCTL)**控制,WDTCTL是一个16位具备密码保护机制的寄存器,其中高8位(WDTPW)为密码位,低8位为配置位。每次对WDTCTL写操作需要对高8位(WDTPW)写

  我想要TIM定时器输出的PWM波形:0.1%精度占空比, 频率范围:200Hz - 10KHz。请问能实现吗? Ⅰ 写在前面 如果有朋友下载了上一篇文章我提供的例程,在“bsp_timer.h”文件下,你就会发现有如下一段被我注释了的【说明性文字】。 这个工程是我从之前项目中提取出来(复制部分代码),从新整理的一个的工程。里面的这个被注释了的描述文字是之前整理的,今天重新对其说明一下。 这里句题外话: 我一般都是注重让大家明白其原理,提供的工程代码以简单为原则。比如:没有添加系统,没有添加参数越界检查等额外的代码。不是让你直接拷贝过去就用,通常要结合你实际工程,对其修改。 Ⅱ 解读那段文字

  输出的PWM频率范围及占空比精度 /

  MSP43016位定时器B模块是单片机的重要资源。MSP430F13/14/15x系列都有定时器模块B,但是不同单片机系列所带的比较/捕获模块功能不一样。 1.定时器B模块: TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。 二者区别: (1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位; (2)TimerB没有实现定时器A中的SCCI功能位的功能; (3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器; (4)有些芯片型号当中TimerB输出实现了高阻

  总的来说,430单片机一共有三个定时器,定时器A,定时器B,还有就是看门狗定时器,这里我们主要是讨论430单片机的定时器A的功能,定时器A的功能是我目前见过最厉害的定时器,视频上说用好定时器A的话,对于今后线具有很重要的意义 同样是先介绍一下定时器A的特点:(英语六级科学类文章的常用写法,总分总) 1:可作为异步的16位定时器,16位的计数器,其中计数器有四种工作方式 2:能调节的外部时钟源 3:3个捕获比较源 4:拥有可以输出PWM功能 5:异步的输入与输出锁存 6:拥有多个中断源 其实,看datasheet现在真的掌握方法了,看完简介关键就是看懂下面这张图,在编程的时候熟悉相关寄存器的操作就可以了 并且

  A功能的大致介绍 /

  问题描述: 单片机的精华资源不多,今天练习掌握它的定时器硬件资源 硬件环境: 89C58RD+单片机(共三个定时器T0、T1、T2) 目标是这样的:定时器定时1秒后闪灭led,使用的是定时器内部中断 代码如下: #include reg52.h sbit led = P1^0; unsigned int int_count = 0; void internal_int() interrupt 1 // time0 overflow { int_count ++; //TH0=(8192-5000)/32; //分别得到高8位和低8位 //TL0=(8192-50000)2;

  我们知道,利用单片机定时器捕获功能测量脉冲信号宽度及占空比是种很常见的做法。这里以STM32的定时器为例来介绍基于其捕获功能实现对脉宽的测量的思路及过程。 通常来说,使用STM32定时器的捕获功能来实现脉宽测量,我们大家可以选用一个通道、也能够正常的使用两个通道。使用1个通道时,只需使用定时器基本的输入捕获功能结合中断或DMA就可以实现;若使用两个通道时可以将捕获功能与定时器的从模式来相结合完成。这里就两种方案的实现示例都做个简单介绍。 不妨先介绍基于单个通道的输入捕获功能来实现对1路信号脉冲宽度及占空比的测量,并在测量过程中统计用于测量的定时器自身的溢出事件,以保障即使被测信号脉宽长于测量定时器自身的溢出周期时也能有效测量。 这

  捕获测量脉宽的应用示例 /

  背景:由于项目需要,需要stm32输出任意相角度的PWM 前提知识: 1、stm32定时器的Tim,一般有多个OC。具体差别根据型号来定。 2、定时器的使能,理论上是多个通道同时使能 3、TIM_OCInitStructure.TIM_OCMode 的其中一个参数是 TIM_OCMode_Toggle。它的意思是计数达到比较值的时候,输出电平翻转 4、由第3点可知,移相占空比固定在了50% 5、定时器的计数方式只能为上升计数或者下降计数 6、下图为原理图 (其实,只用设计每个OC的翻转点,就能转化为相应的移相角) 关键代码: 配置通道输出方式: 配置ARR的值为2000,即一个周期计数值为2000:

  输出移相PWM /

  引 言 软件的可靠性一直是一个核心问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这样的一种情况在嵌入式系统中也同样存在。由于单片机的抗干扰的能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了能够更好的保证系统在干扰后能自动回到正常状态,看门狗定时器(Watchdog Timer)的利用是很有价值的。 1 看门狗的作用 看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新再启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使

  嵌入式系统软硬件协同设计教程:基于Xilinx Zynq-7000 (符意德)

  数字电路答疑解惑与典型题解_北京邮电大学 (吴蕾、杨平乐、王诗兵、吴婷)

  有奖征文:邀一线汽车VCU/MCU开发工程师,分享开发经验、难题、成长之路等

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】3月27日,STSAFE-A110安全芯片及ST4SIM eSIM芯片助力安全通信

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【下载】AN5129_适合2.4GHz无线信号的低成本PCB天线 基于 BlueNRG-LP ARM Cortex-M0+

  关于制程,很多工程师都存在疑问:为什么手机芯片都3nm 2nm了,MCU却很少用制程升级性能。其实,MCU也一定要通过制程升级性能,只不过,在此之前要换掉存储技术。...

  随着工业和城市的加快速度进行发展,道路照明系统的产业也在快速地发展,并趋于复杂化,为了更经济地控制和维护复杂的路灯系统,市面上各大科技公司开 ...

  脉冲宽度调制模式(PWM)可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。本示例实现 IO 输出模式–PWM 波形 ...

  1、需要两份程序BootLoader和App程序,两份程序均能够最终靠jlink下载,只需要将下载地址修改一下即可:2、在BootLoader中的跳转函数 define ...

  前言有时在一些应用中,我们应该检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制PVD(Programmabl ...

  PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: