快捷搜索:

单片机定时器中断原理及s3c2440的定时器使用方法

在法度榜样中,必要延时的时刻,平日状况下有两种措施:1、轮回语句实现,这种措施简单易用,然则无法获得一个正确的延韶光阴;2、准时器准时,可达到正确延时。

中断的观点

什么是中断:CPU在处置惩罚某一事故A时,发生的别的某一事故B哀求CPU去处置惩罚(孕育发生了中断),随后CPU暂时中断当前正在履行的义务,去对事故B进行处置惩罚,CPU处置惩罚完事故B后再返回之前中断的位置继承履行原本的事故A,这一历程总称为中断。

中断流程示意图

使CPU中断的事故称中断源。中断源向CPU发出中断哀求,CPU暂时中断原本履行的事故A转去办事故B。事故B处置惩罚完毕后继承返回本来中断的地方(该历程称中断返回,本来中断的地方为断点),继承履行本来的事故。

中断的优先级

中断的好处

(1):前进了CPU的效率

CPU是谋略机的批示中间,它与外围设备(如:按键,显示器等)通讯的措施有查询和中断2种

1:查询:无论外围i/o是否必要办事,CPU每隔一段光阴都要依次查询一遍,这种查询的措施,CPU必要花费一些光阴在做查询的办事事情

2:中断:在外围设备必要通讯办事时主动奉告CPU,CPU停下当前事情去处置惩罚中断法度榜样,从而前进了CPU的事情效率。

(2):可以实实际时处置惩罚

外设任何时刻都可能发出哀求中断的旌旗灯号,CPU接到哀求后及时处置惩罚,以满意实时系统的必要

(3):可以及时处置惩罚故障

谋略机系统运行历程中难免会呈现故障,eg:电源中断,存储器掉足,外围设备事情不正常等,这时可以经由过程中断系统向中断源的CPU发出哀求,以便办理故障。

准时器的应用步骤

1.打开总中断:

EA(ENABLE ALL) = 1;

2.设置准时器事情要领:

TMOD寄存器:准时器/计数器模式节制寄存器

此中M1和M0是准时器事情要领的设置位,共可设置4种事情要领。

要领0(M1M0 = 00):13位准时/计数器

要领1(M1M0 = 01):16位准时/计数器 //平日采纳要领1

要领2(M1M0 = 10):8位自动重装准时/计数器

要领3(M1M0 = 11):T0分为两个自力的8为准时/计数器;T1在此要领竣事计数

3.准时器填装初值

填装初值要点:

单片机晶振频率:12M,震惊周期为1/12us

②标准的51单片机为12T,即12个时钟周期, 12 x 1/12 us = 1us,即加一次1us。

例如:将准时器设置在事情要领1,初值设为10ms:

TMOD = 0x01;

TH0 = (65536 - 10000);//10000代表10000个1us

TL0 = (65536 - 10000);

4.打开准时器中断

ET0 = 1:ENABLE TIME0

ET1 = 1: ENABLE TIME1

5.打开准时器(开始计数)

TR0 = 1:打开准时器0

TR1 = 1:打开准时器1

6.写中断办事函数(ISR)

留意:中断办事函数不能有参数和返回值

准时器应用法度榜样

留意:

1:准时器和中断都属于单片机的内部资本,在开拓板上是没有芯片的,同时准时器的初始化法度榜样一旦溢出,会自动去履行准时器中断子法度榜样,而不必要我们自己去调用,这些都是由硬件直接节制的。

2:准时器谋略的是固定脉冲,其准韶光阴是可以谋略出来的。它比延时函数有更好的感化,能前进CPU 的效率,由于延时函数是必要消费CPU去履行的,在此时代,CPU是不能履行其它功能的,而准时器是必要用到 的时刻,CPU自动调用。

s3c2440的准时器应用措施

系统时钟

首先,应先懂得s3c2440的时钟系统。MCU的主时钟源主如果外部晶振或外部时钟,今朝用的最多的是外部晶振。MINI2440开拓板应用一个12MHz的外部晶振,假如CPU只事情在12MHz频率下,开拓板的应用效率异常低,所有依附系统时钟事情的硬件,其事情效率也异常低,假如想前进CPU的事情效率,则必要对输入时钟进行一系列处置惩罚,其流程如下:

晶振频率经由过程PLL(相环)进行倍频处置惩罚。s3c2440有两个PLL,分手是UPLL和MPLL。UPLL专用于USB模块,供给48MHz,MPLL供给FCLK、HCLK和PCLK。FCLK是主频时钟,用于ARM920T内核;HCLK用于AHB总线设备,如内存节制、中断节制、LCD节制、DMA以及USB主模块;PCLK用于APB总线设备,如外围设备的看门狗,IIS,I2C,PWM,MMC接口ADCUART,GPIO,RTC以及SPI。

s3c2440支持FCLK、HCLK和PCLK之间的分频比例选择,该比例由CLKDIVN寄存器中的HDIVN和PDIVN来抉择。是以,我们只需确定FCLK,即可经由过程设定HDIVN和PDIVN来确定HCLK和PCLK。

FCLK与输入时钟Fin之间的倍数关系(即晶振频率经由过程PLL倍频)是经由过程MPLLCON寄存器(如图1所示)来设置的,MPLLCON寄存器中包孕3个参数:MDIV、PDIV、SDIV,公式如下:

MPLL(FCLK) = (2*m*Fin) / (p*2^s)

此中:m = MDIV + 8 , p = PDIV + 2 ,s = SDIV

图1 MPLLCON寄存器

总结一下,时钟孕育发生流程为:外部时钟源→经由过程寄存器MPLLCON获得FCLK→再经由过程寄存器CLKDIVN获得HCLK和PCLK。

准时器

s3c2440有5个16-bit的准时器,准时器0、1、2、3具有PWM功能;准时器4只有一个内部准时而没有关联到输出管脚上;同时,准时器0有一个dead-zeno孕育发生器,用于大年夜电流设备。

准时器的输入时钟频率旌旗灯号跟预分频器(prescaler)和分频器(divider)相关。如图2所示。

预分频器:准时器0和1共享一个8-bit预分频器,准时器2、3、4共享另一个8-bit预分频器,预分频器数值由TCFG0设置设置设备摆设摆设,取值范围是0~255。

分频器:同时,每一个准时器都分手有一个时钟分频器,这样就可以孕育发生5个不合的分频旌旗灯号,分频器数值由TCFG1设置设置设备摆设摆设,取值只能是2、4、8、16,或者外部TCLKn。

图2 准时器输入时钟框图

详细公式为:

准时器输入时钟频率=PCLK ÷ (prescaler+1) ÷ divider

比如,已知PCLK=50MHz,我们盼望某一个准时器的输入时钟频率为25KHz,那么我们就必要设置设置设备摆设摆设prescaler=249,divider=8,则递减计数器每减一次1,光阴就以前0.04ms(1÷25000×1000)。

TCONn为准时器节制寄存器,控订准时器的开启与关闭。

准时计数缓冲寄存器TCNTBn用于存储准时器的初始值,当准时器启动时,TCNTBn里的数值会被加载到递减计数器TCNTn中。

准时对照缓冲寄存器TCMPBn用于存储准时器的对照值,TCMPBn的数值会被加载到对照寄存器TCMPn里来跟递减计数器进行对照。

事情道理为:

(1)将准时器的初始值和对照值装入寄存器TCNTBn和TCMPBn中。

(2)设置准时器节制寄存器TCON,启动准时器。此时,TCMPBn和TCNTBn中的值会加载到寄存器TCMPn和TCNTn中。

(3)准时器会减1计数,即TCNTn进行减1计数,当TCMPn=TCNTn时,TOUTn引脚输出取反。

在平日利用中,TCMPBn的值用于PWM,当递减计数器和对照计数器数值相等时,电平会翻转,从而达到改变占空比的目的。假如仅仅是用于准时中断,那么将TCMPBn设置为0,则当递减计数器达到0时,准时器中断哀求看护CPU准时器操作已经完成。当准时器计数器到达零时, 响应的 TCNTBn的值将自动被加载到递减计数器以继承下一次操作。然而,假如准时器竣事了,例如,在准时器运行模式时代清除TCONn的准时器使能位, TCNTBn的值将不会被从新加载到计数器中。

s3c2440的准时器有一个双缓冲功能,包管下次准时器操作时重加载的值改变时无需竣事当前的准时器操作。以是新的准时器的值设定,当前的准时器操作也可以成功完成。准时器的值可以写到TCNTBn中,准时器确当前计数值可以从TCNTOn中读到。TCNTBn被读取的值,不注解计数器确当前状态,而是下一次准时器持续时代的重加载值。当TCNTn为0,自动重加载操作会复制TCNTBn到TCNTn中。然则,假如TCNTn为0,而自动重加载的使能位为0,那么TCNTn不会再操作了。

设置设置设备摆设摆设完准时器相关内容,接下来是设置设置设备摆设摆设中断,如设置中断模式(IRQ或FIQ),将准时器履行函数对应准时中断进口地址等等,这里不多加赘述。

您可能还会对下面的文章感兴趣: