时钟源及定时器计算方法

合集下载

时钟源及定时器计算方法2

时钟源及定时器计算方法2

●时钟源选择●时钟源定义例1.设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHzP 219页PLLCON|= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0))●定时器定义定时器输入时钟频率=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV}其中预分频值为0~255再分频DIV为2,4,8,16,32例1.MCLK=64MHz,时间间隔T=5s定时器输出频率fout=1/T=1/5=0.2HzDIV= 32Prescaler=199 Prescaler:0~255Fin= MCLK/{ prescaler +1}/DIV 尽量保持整除=64MHz/200/32=10KHzTCNTBn = Fin / fout=10KHz/0.2=50K=50000 TCNTBn:0~65535ARM7的定时器配置及启动!第一步:配置定时器配置寄存器0(TCFG0)以设置定时器的预分频值prescaler第二步:配置定时器配置寄存器1(TCFG1)以设置定时器的再分频值DIV第三步:设置定时器初值TCNTn,TCNTBn及比较寄存器TCMPn,TCMPBnrTCNTB0 = 792;rTCMPB0 = 396;第四步:配置定时器控制寄存器TCON的定时器自动重载位,翻转位,手动更新位,及启动定时器位。

注:启动定时器的同时应清除手动更新位。

rTCON |= (1<<10)|(1<<9)|(1<<2)|(1<<1); // 手动更新delay(10);rTCON &= ~((1<<9)|(1<<1)); // 自动加载delay(10);rTCON |= (1<<11)|(1<<3)|(1<<8)|1; // 启动定时器,自动加载第五步:如果要产生定时器输出,则应配置GPIO端口E为功能2,rPCONE |=0x200;// set GPE[9:8]=10 :TOUT1第六步:若定时器要产生中断,则应将定时器中断屏蔽位使能pISR_TIMER0=(unsigned)timer0_int;ClearPending(BIT_TIMER0);rINTMSK &=~(BIT_GLOBAL|BIT_TIMER0);定时器控制寄存器(TCON)定时器配置寄存器0中断void init_int(void){// interrupt settingsrI_ISPC = 0x3ffffff; // clear interrupt pending registerrEXTINTPND = 0xf; // clear EXTINTPND registerrINTMOD = 0x0; // all for IRQ moderINTCON = 0x5; // nonVectored mode, IRQ disable, FIQ disable rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567);// set EINT interrupt handlerpISR_EINT4567 = (int)int4567_isr; // PORT G configurationrPCONG = 0xffff; // EINT7~0rPUPG = 0x0; // pull up enablerEXTINT = rEXTINT | 0x22220020; // EINT4567 falling edge moderI_ISPC |= BIT_EINT4567;rEXTINTPND = 0xf; // clear EXTINTPND reg}IO端口使用例子rPDATB = 0xff;rPCONB = 0xffff;rPUPG = 0x0;rSPUCR = 0x7; //使能数据线上拉电阻。

8051t单片机定时器计算公式

8051t单片机定时器计算公式

8051t单片机定时器计算公式8051单片机中的定时器是一种非常重要的功能模块,它可以用来计时、测量时间和生成特定的时间延迟。

本文将详细介绍8051单片机定时器的工作原理、计算公式和应用。

一、定时器的工作原理在8051单片机中,定时器是一种特殊的寄存器,用于计时和测量时间。

8051单片机有两个定时器,分别为定时器0(TIMER0)和定时器1(TIMER1)。

这两个定时器可以独立地工作,也可以协同工作。

定时器的输入时钟源可以选择外部晶振(外部时钟源)或者内部时钟源(通常为时钟振荡器的晶振)。

定时器通过计数器寄存器来计数输入时钟的脉冲数。

当定时器计数到预设的计数值时,定时器将触发一个中断,并将标志位设置为1,表示定时已到。

中断可以用来执行特定的任务,例如更新显示、读取传感器数据等。

定时器计数到预设值后,会自动重新开始计数。

二、定时器的计算公式8051单片机中定时器的计算公式如下:计数值 = (2^bit_length - 1) - (输入脉冲数 / 输入时钟频率)其中,bit_length指的是定时器计数器的位数,通常为8位或16位。

输入脉冲数是指输入时钟源的脉冲数,输入时钟频率是指输入时钟源的频率。

以定时器0为例,如果定时器计数器为8位,输入时钟源的频率为12MHz,我们希望计时1秒,则计算公式为:计数值 = (2^8 - 1) - (12,000,000 / 1)= 255 - 12,000,000≈ 220所以,定时器0的计数值应设置为220,当定时器0计数值达到220时,定时器将触发中断。

三、定时器的应用定时器在8051单片机中有广泛的应用,以下是几个常见的应用场景:1. 延时功能定时器可以用来实现延时功能,例如让LED灯闪烁或者执行一些需要等待的操作。

通过设置定时器的计数值和输入时钟频率,可以实现一定时间的延迟。

2. 计时功能定时器可以用来计时,例如用于计算程序执行的时间、测量某些事件的持续时间等。

1t单片机定时器初值计算公式

1t单片机定时器初值计算公式

1t单片机定时器初值计算公式单片机的定时器是一种计时器,可以用于进行定时操作。

定时器的初值计算公式取决于单片机的工作频率、定时器的工作模式以及要实现的定时周期。

在单片机中,通常使用定时器计数器进行定时操作,定时器计数器根据设定的时钟源进行计数,当计数值达到设定值时,定时器会产生一个中断或者触发一个事件。

因此,定时器初值的计算要根据计时器的计数范围和时钟频率来确定。

以下是一些常见的单片机定时器的初值计算公式:1. 定时器模式为自由运行计数模式(Mode0):计数范围为0-255,时钟频率为f(单位为Hz),定时周期为T(单位为s)。

初值=256-(T*f)2. 定时器模式为 8 位自动重装载模式(Mode2):计数范围为0-255,时钟频率为f(单位为Hz),定时周期为T(单位为s)。

初值=256-(T*f)3. 定时器模式为定时器/计数器模式(Mode1):需要注意的是,上述公式中的时钟频率 f 可能需要进行一些转换,以适应定时器的要求。

例如,如果单片机的工作频率为 fosc (单位为Hz),而定时器的时钟源选择了内部时钟源,且内部时钟源频率为 fsys (单位为 Hz),则时钟频率 f 可以计算为:f = fsys / 12另外,有些单片机还提供了预分频器功能,可以将时钟源的频率分频后再作为定时器的时钟源,从而进一步扩展定时范围。

在这种情况下,需要根据预分频器的设置来调整定时器初值计算公式。

总之,单片机定时器初值的计算公式需要综合考虑计数范围、时钟频率、定时周期和定时器模式等多个因素。

在实际应用中,需要根据具体的单片机型号和工作要求,查阅单片机的手册或者参考相关资料来确定正确的计算公式。

单片机定时器初值计算公式

单片机定时器初值计算公式

单片机定时器初值计算公式
为了计算定时器的初值,我们首先需要了解定时器的时钟源和分频因子。

时钟源是指提供给定时器的时钟信号,它可以是内部时钟源或外部时钟源。

内部时钟源通常由单片机的时钟系统产生,而外部时钟源可以来自于其他外部设备。

分频因子是指将时钟源频率分频后得到的频率值。

分频因子的设置决定了定时器的计数速度。

通常情况下,定时器的计数速度是时钟源频率除以分频因子。

根据定时器的时钟源和分频因子,可以使用以下公式来计算定时器的初值:
初值=(2^N-1)-(频率/分频因子/所需的时间间隔)
其中,N是定时器寄存器的位数,频率是时钟源的频率,分频因子是时钟源的分频因子,所需的时间间隔是我们希望定时器计数到的时间。

以下是一个简单的例子,用于演示如何使用公式计算定时器的初值:假设我们的单片机采用内部时钟源,频率为8MHz,定时器的分频因子为64,我们希望定时器在10ms的时间间隔内计数完毕。

首先,我们需要计算出时钟源的频率经过分频后的实际频率:
实际频率=8MHz/64=125kHz
然后,将实际频率代入公式,我们可以计算出初值:
初值 = (2^8 - 1) - (125kHz/10ms) = 31 - 12.5 = 18.5
由于初值必须是整数,我们可以将初值进行取整操作,最终的初值为18
需要注意的是,计算出来的初值是用来装载到定时器寄存器的值,所以在使用时需要将其转换为二进制形式,并根据单片机的具体定时器配置进行相应的设置。

总结起来,单片机定时器初值的计算公式为:
初值=(2^N-1)-(频率/分频因子/所需的时间间隔)
通过计算出的初值,我们可以对定时器进行设置,实现所需的时间控制功能。

时钟源及定时器计算方法

时钟源及定时器计算方法

时钟源及定时器计算方法时钟源是数字系统中用于生成时钟信号的硬件模块。

时钟信号在数字系统中非常重要,它用于同步系统中的各个模块,确保它们按照正确的时序进行操作。

在数字系统中,时钟信号的频率决定了系统的性能和响应速度。

时钟源的设计考虑多种因素,包括频率精度、稳定性和功耗等。

常见的时钟源类型有晶振、PLL(Phase Locked Loop)和等离子体时钟源。

晶振是最常用的时钟源类型之一、它利用石英晶体的机械振动产生一个准确的频率。

晶振的频率通常为几十kHz到几十MHz。

晶振的优点是频率稳定性高,但功耗相对较高。

PLL是一种控制系统,可以将输入信号转换为固定或可变频率的输出信号。

它结合了相位比较器、低通滤波器和振荡器等组件。

PLL可以通过调节反馈路径中的频率倍增器来改变输出频率。

等离子体时钟源是一种射频发生器,利用等离子体振荡器产生一个准确的高频信号。

等离子体时钟源的频率通常在几百MHz到几GHz。

它的优点是功耗低,频率稳定性高,但成本较高。

定时器是一种用于测量时间间隔或执行定时任务的硬件模块。

它通常包括计数器和比较器。

计数器用于记录经过的时钟周期数,比较器用于与给定的时间进行比较,并触发相应的事件。

定时器主要有两种工作模式:单次定时和周期定时。

单次定时模式用于在达到给定时间后触发一次事件,而周期定时模式用于以给定的时间间隔循环触发事件。

定时器计算方法包括计算计数器的计数值和比较器的比较值。

计数值和比较值的选择取决于所需的时间间隔或延迟时间。

计数值=时间间隔×时钟频率其中,时间间隔是所需的时间,时钟频率是时钟源的频率。

比较器的比较值可以根据需要选择。

除了单次定时和周期定时,还可以通过定时器的其他功能来实现更复杂的定时需求,比如输入捕获和输出比较等功能。

总之,时钟源是数字系统中生成时钟信号的硬件模块,常见的类型包括晶振、PLL和等离子体时钟源。

定时器是一种用于测量时间间隔或执行定时任务的硬件模块,计算方法包括计算计数器的计数值和比较器的比较值。

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

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

51单片机定时器初值的计算单片机中的定时器是实时计时器,一般用于测量时间或控制系统的时间间隔。

在51系列单片机中,定时器实际上是一个16位的计数器,可以以不同的方式工作,如定时器模式、计数器模式、定时/计数器模式等。

定时器的工作原理是根据晶振频率产生一个时钟信号,通过计数器进行计数,当计数值达到设定值时触发中断或产生相应的输出信号。

因此,在使用定时器之前,首先需要计算定时器的初值。

定时器的初值可以通过以下步骤计算:1.确定定时器的工作模式:定时器可以有多种工作模式,如定时模式、计数器模式等。

根据具体的应用需求选择相应的工作模式,并将定时器寄存器设置为相应的模式。

2.确定定时器的时钟源:定时器的时钟源可以是外部晶振或内部时钟信号,由于外部晶振的频率一般比较稳定,因此通常将晶振作为定时器的时钟源。

3.确定定时器的分频系数:定时器的分频系数决定了定时器的工作频率,可以通过设置定时器的分频寄存器来实现。

分频系数越大,定时器的工作频率越低。

4. 确定所需的定时时间:根据具体的应用需求确定需要的定时时间,例如10ms、100ms等。

5.计算初值:根据定时器的时钟源、分频系数和所需的定时时间,可以计算出定时器的初值。

计算公式为:初值=(2^16-1)-定时时间*定时器工作频率其中,2^16-1是定时器的最大计数值。

6.将初值写入定时器寄存器:最后,将计算得到的初值写入定时器的寄存器中,使得定时器按照设定的时间开始计数。

需要注意的是,计算出来的初值是一个16位的值,需要将其拆分为高8位和低8位,并分别写入定时器的高字节和低字节寄存器中。

总结起来,计算定时器初值的步骤包括确定定时器的工作模式、时钟源和分频系数,确定所需的定时时间,根据计算公式计算初值,将初值写入定时器寄存器中。

这样,定时器就可以按照设定的时间开始计数了。

定时器计算方法

定时器计算方法

STM32定时器时间的计算方法STM32中的定时器有很多用法:(一)系统时钟(SysTick)设置非常简单,以下是产生1ms中断的设置,和产生10ms延时的函数:void RCC_Configuration(void){RCC_ClocksTypeDef RCC_ClockFreq;SystemInit();//源自system_stm32f10x.c文件,只需要调用此函数,则可完成RCC的配置. RCC_GetClocksFreq(&RCC_ClockFreq);//SYSTICK分频--1ms的系统时钟中断if (SysTick_Config(SystemFrequency / 1000)){while (1); // Capture error}}void SysTick_Handler(void)//在中断处理函数中的程序{while(tim){tim--;}}//调用程序:Delay_Ms(10);当然,前提是要设置好,变量tim要设置成volatile类型的。

(二)第二种涉及到定时器计数时间(TIMx)/*TIM3时钟配置*/TIM_TimeBaseStructure.TIM_Prescaler = 2; //预分频(时钟分频)72M/(2+1)=24M TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数TIM_TimeBaseStructure.TIM_Period = 65535; //装载值18k/144=125hzTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);定时时间计算:TIM_TimeBaseStructure.TIM_Prescaler = 2;//分频2 72M/(2+1)/2=24MHzTIM_TimeBaseStructure.TIM_Period = 65535; //计数值65535((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+2)/72M)*(1+65535)=0.00273秒=366.2Hz */注意两点(来自大虾网,未经检验)(1)TIMx(1-8),在库设置默认的情况下,都是72M的时钟;(2)TIM_TimeBaseStructure.TIM_RepetitionCounter=0;是重复计数,就是重复溢出多少次才给你来一个溢出中断,它对应的寄存器叫TIM1 RCR.如果这个值不配置,上电的时候寄存器值可是随机的,本来1秒中断一次,可能变成N秒中断一次,让你超级头大!假设系统时钟是72Mhz,TIM1是由PCLK2(72MHz)得到,TIM2-7是由PCLK1得到关键是设定时钟预分频数,自动重装载寄存器周期的值/*每1秒发生一次更新事件(进入中断服务程序)。

定时器初值计算方法

定时器初值计算方法

定时器初值计算方法
定时器初值是指定时器被设置时的初始值,通常用于控制定时器的工作时间或计数器。

以下是一些常见的定时器初值计算方法:
1. 使用默认初值:大多数定时器都有一个默认的初值,可以在定时器配置中设置。

如果忘记了初值,可以使用默认值。

2. 计算定时器的时钟频率:可以使用定时器的时钟频率来计算
初值。

时钟频率是指定时器每秒钟所执行的计数次数。

可以通过以下公式来计算定时器初值:初值 = 2 / 时钟频率。

例如,如果定时器的频率为100MHz,则可以使用以下公式计算初值:初值 = 2 / 10000000 = 0.00002。

3. 计算定时器的工作周期:可以使用定时器的中断周期来计算
初值。

中断周期是指定时器在发生中断时执行的计数器次数。

可以通过以下公式来计算定时器初值:初值 = 中断周期 / 工作周期。

例如,如果定时器的中断周期是10秒钟,工作周期是1秒,则可以使用以下公式计算初值:初值 = 10 / 1 = 10。

4. 根据定时器的地址计算初值:如果想根据定时器的地址计算
初值,需要知道定时器的段寄存器地址和功能寄存器地址。

可以使用以下公式计算初值:初值 =段寄存器地址 / 功能寄存器地址。

例如,
如果定时器的段寄存器的地址是0x4000,功能寄存器的地址是
0x3000,则可以使用以下公式计算初值:初值 = 0x4000 / 0x3000 = 0.2。

需要注意的是,使用这些方法计算初值时,应该考虑到定时器的精度和实际时钟频率等因素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时钟源及定时器计算方法示例一.时钟源
Fin=8MHz
●时钟源定义
规则:
Fpllo必须大于20MHZ且少于66MHZ
Fpllo * 2s必须少于170MHZ
Fin/p推荐为1MHZ 或大于,但小于2MHZ
例:设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHz m = (MDIV + 8),p = (PDIV + 2),s = SDIV
由于Fpllo * 2s<170MHZ →2s <170MHz/64 MHz = 2.65
→s=1=SDIV
Fin/p推荐为1MHZ 或大于,但小于2MHZ, 1MHz<=Fin/p<2M Fin /2M<=P< Fin/1M →4<=P<8
p = (PDIV + 2) →2<=PDIV<6
Fpllo = (m * Fin)/(p * 2s)
注:答案不唯一
●SDIV=1 (0x01) PLLCON[1:0] 2位0~3
●取PDIV=2 (0x02) PLLCON[9:4] 6位0~63
●MDIV=?(0x38) PLLCON[19:12] 8位0~255

Fpllo=MCLK=( MDIV +8)*8M/( PDIV +2)*2SDIV =( MDIV +8)*8M/((2+2)*21)= 64MHz
→( MDIV +8)*8M/8= 64MHz
→MDIV +8=64
→MDIV=56
PLLCON:MDIV[19:12],PDIV[9:4],SDIV[1:0]
0x38 0x2 0x1
●对PLLCON赋值方法一:
PLLCON=0b0011 1000 0000 0010 0001或PLLCON=0x380201
●对PLLCON赋值方法二:
PLLCON= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0))
二.定时器定义
定时器输入时钟频率f in=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV},其中预分频值为0~255,再分频DIV为2,4,8,16,32
例:设系统输入主时钟频率为MCLK=64MHz,要求定时器Time0输出脉冲时间间隔T=5s,占空比为20%。

注:答案不唯一。

●由定时器输出频率要求可知:f out=1/T=1/5=0.2Hz
●设取DIV= 32
Prescaler=199 Prescaler:0~255
●由f in= MCLK/{ prescaler +1}/DIV=64MHz/200/32=10KHz 尽量保持整除
●TCNTBn = f in / f out=10KHz/0.2=50K=50000 TCNTBn寄存器为16位:0~65535
●占空比20%,可得TCMPBn= TCNTBn*20%=50000*20%=10000,即定时器从50000递
减计数至10000时(即TCMPBn= TCNTBn),Tout输出高电平
定时器配置及启动!
●第一步:配置定时器配置寄存器0(TCFG0)以设置定时器的预分频值
prescaler=199
rTCFG0 = TCFG0 &~(0xff)| 199;
●第二步:配置定时器配置寄存器1(TCFG1)以设置定时器的再分频值DIV=32
rTCFG1 = TCFG1 & ~0b1111|0b0100;
●第三步:设置定时器0初值TCNTn=50000,TCNTBn=50000及比较寄存器
TCMPn=10000,TCMPBn=10000
rTCNT0=50000;
rTCNT B0=50000;
rTCMP0=10000;
rTCMP B0=10000
●第四步:配置定时器0控制寄存器TCON的定时器自动重载位,翻转位,手动更
新位,及启动定时器位。

注:启动定时器的同时应清除手动更新位。

rTCON = rTCON & ~0xff|0b01010; //设置设置Timer0 (rTCON[4:0])不使能死区,自动重载,不反转输出,手动更新,停止定时器
启动定时器的同时应清除手动更新位。

rTCON |= (1 <<0); //启动定时器Timer0(rTCON[0]=1)
rTCON &= ~(1 << 1); //清除Timer0 (rTCON[1]手动更新位
●第五步:如果要产生定时器0输出,则应配置GPIO端口E为功能2,
rPCONE = rPCONE&~(0b11<<6)| (0b10<<6);
//设置端口E第PE3位为功能2(PCONE[7:6]=10)(TOUT0)
●第六步:若定时器0要产生中断,则应将定时器中断屏蔽位使能
rINTMSK = rINTMSK& ~(0x1<<26)|0x1<<13;//写0开启全局屏蔽位(rINTMSK[26]),定时器Timer0屏蔽位(rINTMSK[13])。

相关文档
最新文档