跳转到主要内容

定时器

【下载】PIC32 系列参考手册——捕捉 / 比较 /PWM/ 定时器 (MCCP 和 SCCP)

judy /

部分 PIC32 系列器件包含了一个或多个捕捉 / 比较 /PWM/ 定时器(CCP)模块。这些模块类似于
许多其他 16 位单片机上的多功能定时器模块。此外,它们还提供与先前所有 PIC32 器件上的输入
捕捉、输出比较和通用定时器外设相当的功能。

<font color="#0000C6" size="4"><a href="http://mcu.eetrend.com/files/2018-03/wen_zhang_/100010701-37533-5a.pdf"…《PIC32 系列参考手册——捕捉 / 比较 /PWM/ 定时器 (MCCP 和 SCCP)》</a></font>

51单片机 | 定时/计数器原理及结构

judy /

定时/计数器结构(T0和T1)
<img src="http://mcu.eetrend.com/files/2018-02/wen_zhang_/100010259-35431-1.png&q…; alt="51单片机 | 定时/计数器原理及结构">
16位寄存器T0、T1分别由TH0、TL0和TH1、TL1四个8位计数器组成

<ul>
<li>
<p>定时器的区别:</p>

<ul>
<li>T0可分成2个独立的8位定时器,而定时器1则不能;</li>
<li>T1可作为串口的波特率发生器,而定时器0则不能。</li>
</ul>
</li>
<li>
<p>工作原理</p>

单片机定时/计数器的四种工作方式

judy /

<strong>方式1</strong>

当TMOD中的M0=0,M1=0时,为13位计数或定时方式,其中TLi使用低5位,其结构如图4.2所示。
<center><img width="500" src="http://mcu.eetrend.com/files/2018-01/wen_zhang_/100009939-33986-1.jpg&q…; alt="单片机定时/计数器的四种工作方式"></center><center><i>图4.2 方式0时T0、T1的结构图</i></center>

<strong>方式2</strong>

STM32定时器输出PWM频率和步进电机控制速度计算

judy /

STM32F4系列定时器输出PWM频率计算

第一步,了解定时器的时钟多少:
<center><img width="600" src="http://mcu.eetrend.com/files/2018-01/wen_zhang_/100009890-33752-22.png&…; alt="STM32定时器输出PWM频率和步进电机控制速度计算"></center>

我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的。

(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线
(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线

从STM32F4的内部时钟树可知:

AVR——使用定时器必须弄清的几个概念

judy /

在MCU中(M16),定时器是独立的一个模块,M16有三个独立的定时器模块,即T/C0、T/C1和T/C2;其中T/C0和T/C2都是8位的定时器,而T/C1是一个16位的定时器。定时器的工作是独立于CPU之外自行运行的硬件模块。

1、定时器何时开始工作(或说计数)的?

当TCCR0!=0x00任何模式下,只要MCU一上电,T/C就开始计时工作。其实TCCR0主要是定时器的预分频和波形模式、比较匹配模式的设置,说到预分频,不得不提一下这个模块,这个模块是T/C0、T/C1共用的一个模块,但可以有不同的分频设置。

2、定时器是如何进行工作的:说到定时器的工作,不得不说三个个重要参数:TCNT0、OCR0,TIMSK,TCNT0是设置定时器的计时初始值,定时器开始工作后立即从TCNT0一直累加到0XFF,累加过程所消耗的时间就是我们需要的定时时间;OCR0是一个比较设定值,当TCNT0的值累计到OCR0时(TNCT0==OCR0),如果有开启比较匹配中断功能,那么此时就会产生比较中断,所以,OCR0的值一般都是设置在TCNT0初始值和0XFF之间,之外的任何值都不会产生比较中断。TIMSK是一个中断使能位设置,就是我们需要计时器溢出中断或是比较匹配中断功能或两者都要时就对TIMSK的相应寄存器位进行设置。

51单片机计数器与定时器的区别

judy /

在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。

计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。

在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。

MM32 定时器操作

judy /

<font color="#33b1c8"><strong>1、定时器同步</strong></font>

在MM32L073一个定时器有4 通道 PWM 输出,有客户在应用中需要使用两个定时器控制6路PWM输出,为了使两个定时器的PWM输出相同的波形,所以需要两个定时器实现同步功能。

所有 TIMx 定时器在内部相连,用于定时器同步或链接。当一个定时器处于主模式时,它可以对另一个处于从模式的定时器的计数器进行复位、启动、停止或提供时钟等操作。

MM32L073的每个定时器都可以由另一个定时器触发启动定时器一般是通过软件设置而启动,MM32L073的每个定时器也可以通过外部信号触发而启动,还可以通过另外一个定时器的某一个条件被触发而启动。这里所谓某一个条件可以是定时到时、定时器超时、比较成功等许多条件。这种通过一个定时器触发另一个定时器的工作方式称为定时器的同步,发出触发信号的定时器工作于主模式,接受触发信号而启动的定时器工作于从模式。

stm32之时钟控制

judy /

本文提到的有以下内容:

• 时钟系统与总线矩阵
• SysTick系统定时器
• RTC实时时钟
• 看门狗定时器
• 通用定时器

<strong>一、时钟系统与总线矩阵</strong>

stm32F4的时钟树如下图所示:
<center><img width="600" src="http://mcu.eetrend.com/files/2017-12/wen_zhang_/100009561-32395-11.png&…; alt="stm32之时钟控制"></center>
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

AVR——使用定时器必须弄清的几个概念

judy /

在MCU中(M16),定时器是独立的一个模块,M16有三个独立的定时器模块,即T/C0、T/C1和T/C2;其中T/C0和T/C2都是8位的定时器,而T/C1是一个16位的定时器。定时器的工作是独立于CPU之外自行运行的硬件模块。

<strong>1、定时器何时开始工作(或说计数)的?</strong>

当TCCR0!=0x00任何模式下,只要MCU一上电,T/C就开始计时工作。其实TCCR0主要是定时器的预分频和波形模式、比较匹配模式的设置,说到预分频,不得不提一下这个模块,这个模块是T/C0、T/C1共用的一个模块,但可以有不同的分频设置。

<strong>2、定时器是如何进行工作的?</strong>

51单片机定时器初值的计算

judy /

先说说什么是时钟周期?什么是机器周期?什么是指令周期?

<strong>时钟周期 </strong>

时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

<strong>机器周期</strong>