STM32定时器基本计数原理解析

发布时间:2023-05-31  

概述

STM32的TIM定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道STM32最基本的计数原理。


虽然STM32定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少us、ms等。


接下来我会讲述关于STM32最基本的计数原理,详细讲述如何做到(配置)计数1us的延时,并提供实例代码供大家参考学习。


TIM计数原理描述

定时器可以简单的理解为:由计数时钟(系统时钟或外部时钟)一个一个计数,直到计数至我们设定的值,这个时候产生一个事件,告诉我们计数到了。


上面简单的描述懂了之后就是需要理解它们每一步骤的细节,比如:提供的时钟频率是多少、分频是多少等。


基本TIM框图:

pIYBAFwkjUCAFy2YAABqaAo5PmQ987.jpg

通用TIM框图:

o4YBAFwkjWyAXF3BAAEi55IQn58632.png

上面两图截取“STM32F4x5、x7参考手册”建议下载手册参看。

从上面两个TIM框图可以看得出来,通用TIM是包含了基本TIM的功能。也可以说基本定时器是定时器最基本的计数部分,我们该文主要就是围绕这部分来讲述,后续会其他更通用、高级的功能给大家讲述。


重要的几个参数(信息):

1.CK_INT时钟:一般由RCC提供(注意:其频率大部分都是系统时钟的一半,在程序中有一个除2的部分,详情请见RCC部分)。

2.CK_PSC时钟预分频:也就是对CK_INT分频。这个值范围:0 - 65535范围都可以,最好能被CK_INT除尽,这样才方便计算时钟。

3.ARR重载值:这个值相当于是我们设定需要计数的值,也就是说计数到这个设定值就会产生一个事件。

综上:CK_INT和CK_PSC确定计数的时钟频率(1秒计多少数),ARR是设定的计数值。最基本的延时(或定时)就由以上三个参数计算而来。

基本延时源代码分析

笔者以F4标准外设库(同时也建议初学者使用官方的标准外设库)为建立的工程,主要以库的方式来讲述。

考虑大家到以后肯定使用定时器更多功能,笔者提供的软件工程实例是通用定时TIM4。其实,将工程中TIM4改为TIM6(基本定时器)一样可以运行的。


1.RCC时钟

o4YBAFwkjWyAD_lAAAB9-U0Nty0644.png

该函数位于bsp.c文件下面;

重点注意:

A.外设RCC时钟的配置要在其外设初始化的前面;

B.匹配对应时钟。

比如:RCC_APB2外设不要配置在RCC_APB1时钟里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译通过,但这是错误的代码】

2.TIM配置

o4YBAFwkjW2AG2QyAACHGOVoELo087.png

该函数位于timer.c文件下面;

该函数就是配置定时器基本计数的函数;

配置为1us的基准:

A.1秒钟计数42M次个脉冲

“TIM基本延时”实例工程中:CK_INT = 84M时钟(SystemCoreClock/2)

“TIM基本延时”实例工程:CK_PSC =84M/42M - 1 = 1 即2分频;

至于为什么要减1?

初学者可以理解为“CK_PSC = 0”时不分频(即1分频);“CK_PSC = 1”时为2分频。

#define TIM4_COUNTER_CLOCK 42000000

#defineTIM4_PRESCALER_VALUE (SystemCoreClock/2/TIM4_COUNTER_CLOCK - 1)

B.1秒钟计数1M次个周期

#define TIM4_PERIOD_TIMING (42 - 1)

即ARR重载值;

由上面“A”得出“1秒钟计数42M次个脉冲”,则记满42个脉冲数需要1us(也就是1秒钟计数1M次个周期)。

3.us(微妙)延时函数

o4YBAFwkjW6AM_EgAACAct0GXmI019.png

该函数位于timer.c文件下面;

上图一个while循环就是1us的时间;上面的一些工作就是配置定时器工作一个周期的时间为1us,这里延时N微妙就应该很好理解了; 其实还有一个函数延时N毫秒,很简单,不描述。

定时中断(拓展)

“定时中断”功能是基于前面基础上进行了一个拓展,增加了计数周期就中断的功能。

笔者单独提供了一个实例:定时1ms中断一次(两工程区别在于时间不是1us,1us中断一次时间太短);

在软件上主要就是增加开启TIM中断、配置NVIC、添加TIM中断函数;

1.使能TIM中断

o4YBAFwkjW6ABDA6AACiScmKL1U074.png

该函数位于(定时中断工程)timer.c文件下面;

功能:使能TIM中断。

2.配置NVIC中断控制器

o4YBAFwkjW-AC5aPAAB83ubSKcU289.png

该函数位于(定时中断工程)bsp.c文件下面;

功能:配置TIM中断控制。

3.中断函数

o4YBAFwkjXCAScI0AAB29WPDDhs306.png

该函数位于(定时中断工程)stm32f4xx_it.c文件下面;

功能:定时周期到进入该中断函数。其中有一个计数减,相当于我们延时工程中while延时N的值。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    及应用情况。 3.1 基本思路 为使定时器溢出中断与CPU响应中断实现同步,该方法针对中断响应与中断请求的时间误差,对定时器原有的计数初值进行修改,以延长定时器计数时间,从而补偿误差。在该方法中,当定时器......
    要软件设定参数,且定时器/计数器的中断引脚需要为高电平) 3.确定定时器的工作模式,是定时模式还是计数模式 C/T. 4.给定时器设初值(设置THX与TLX) 5.开启定时器中断(设置ET0或ET1) 6......
    方式 2 特别适合于用作较精确的脉冲信号发生器。计数初值与计数个数的关系为:X=2(8)-N。 计数控制方式同方式1原理。 (4)方式3: 这几种工作方式中应用较多的是方式 1 和方式 2。定时器中通常使用定时器......
    ~255。这种模式的特点是定时器的溢出标志位TF0会在定时器计满8位时置位,并且自动将定时器初值装载到计数器中。   模式3(16位自动重载定时器):模式3是一个16位自动重载定时器,只能用作定时器。在定时器......
    TL1       TH1      TF1 计数值的范围为: 1~65536(2^16) 定时时间的计算公式与方式0类似。即: T=(2^16-计数初值x)晶振周期/12 或 T=(2^16-计数初值......
    化程序设计: 主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。 (3)程序设计 中断服务程序除了完成要求的产生方波这一工作之外,还要注意将计数初值重新装入定时器中,为下......
    在方式0 */ TH0=TIMER0_CNTS>>8;/* 写入计数初值到TH0 */ TL0=TIMER0_CNTS&0x00ff;/* 写入计数初值到TL0 */ ET0=1......
    ++;   } 80C51单片机定时器工作方式  定时/计数器用于外部中断扩展   扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该......
    ;          //重装计数初值 TL0=(65536-2)%256;          //重装计数初值 CLK=!CLK;                          //取反......
    平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0 - 定时器/计数器0中断, 由T0计数器计满回零引起 T1 - 定时器/计数器1中断, 由T1计数器计满回零引起 T2 - 定时器......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>