精华内容
下载资源
问答
  • STM32定时器定时计算公式

    万次阅读 2017-10-21 14:59:08
    Tout = ((arr+1)*(psc+1))/Tclk ; 其中:  Tclk:定时器的输入时钟频率(单位MHZ) ... Tout:定时器溢出时间(单位为us)  .TIM_Period = arr; eg;4999  .TIM_Prescaler = psc; 

    Tout = ((arr+1)*(psc+1))/Tclk ;

    其中:

      Tclk:定时器的输入时钟频率(单位MHZ)

     Tout:定时器溢出时间(单位为us)


      .TIM_Period = arr;                                    eg;4999

      .TIM_Prescaler = psc;                             eg:7199


      Tout = ((4999+1)×(7199+1))/72 = 500000us = 500ms    。

    展开全文
  • CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。 CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30...

    CronTrigger

    CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。
    CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。
    即便如此,SimpleTrigger一样,CronTrigger拥有的startTime指定的时间表时生效,指定的时间表时,应停止(可选)结束时间。

    Cron Expressions

    cron的表达式被用来配置CronTrigger实例。 cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表。这些子表达式是分开的空白,代表:

    1. 1.        Seconds
    2. 2.        Minutes
    3. 3.        Hours
    4. 4.        Day-of-Month
    5. 5.        Month
    6. 6.        Day-of-Week
    7. 7.        Year (可选字段)

    例  "0 0 12 ? * WED" 在每星期三下午12:00 执行,

    个别子表达式可以包含范围, 例如,在前面的例子里("WED")可以替换成 "MON-FRI", "MON, WED, FRI"甚至"MON-WED,SAT".

    “*” 代表整个时间段.

    每一个字段都有一套可以指定有效值,如

    Seconds (秒)         :可以用数字0-59 表示,

    Minutes(分)          :可以用数字0-59 表示,

    Hours(时)             :可以用数字0-23表示,

    Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份

    Month(月)            :可以用0-11 或用字符串  “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示

    Day-of-Week(每周)可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示

    “/”:为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行

    “?”:表示每月的某一天,或第周的某一天

    “L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”

    “W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”

    ““#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为"6#3" or "FRI#3" 则表示“每月第三个星期五”

     

    1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

                   字段名                 允许的值                        允许的特殊字符  
                   秒                         0-59                               , - * /  
                   分                         0-59                               , - * /  
                   小时                     0-23                               , - * /  
                   日                         1-31                               , - * ? / L W C  
                   月                         1-12 or JAN-DEC         , - * /  
                   周几                     1-7 or SUN-SAT           , - * ? / L C #  
                   年 (可选字段)     empty, 1970-2099      , - * /

     

                   “?”字符:表示不确定的值

                   “,”字符:指定数个值

                   “-”字符:指定一个值的范围

                   “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

                   “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

                   “W”字符:指定离给定日期最近的工作日(周一到周五)

                   “#”字符:表示该月第几个周X。6#3表示该月第3个周五

     

     

             2)Cron表达式范例:

                     每隔5秒执行一次:*/5 * * * * ?

                     每隔1分钟执行一次:0 */1 * * * ?

                     每天23点执行一次:0 0 23 * * ?

                     每天凌晨1点执行一次:0 0 1 * * ?

                     每月1号凌晨1点执行一次:0 0 1 1 * ?

                     每月最后一天23点执行一次:0 0 23 L * ?

                     每周星期天凌晨1点实行一次:0 0 1 ? * L

                     在26分、29分、33分执行一次:0 26,29,33 * * * ?

                     每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

    展开全文
  • CC3200——定时器定时时间的计算

    千次阅读 2019-01-11 13:57:59
    官方SDK中,interrupt例程,涉及三个定时器定时操作,具体操作步骤如下: 1、使能并复位相应定时器  //  // Enable and Reset the timer blocks  //  MAP_PRCMPeripheralClkEnable(PRCM_TIMERA0,...

    CC3200的定时器可分为四组:

    每组又各有A  B两个子定时器

    官方SDK中,interrupt例程,涉及三个定时器的定时操作,具体操作步骤如下:

    1、使能并复位相应定时器

        //
    
        // Enable and Reset the timer blocks
    
        //
    
        MAP_PRCMPeripheralClkEnable(PRCM_TIMERA0, PRCM_RUN_MODE_CLK);
    
        MAP_PRCMPeripheralClkEnable(PRCM_TIMERA1, PRCM_RUN_MODE_CLK);
    
        MAP_PRCMPeripheralClkEnable(PRCM_TIMERA2, PRCM_RUN_MODE_CLK);
    
        MAP_PRCMPeripheralReset(PRCM_TIMERA0);
    
        MAP_PRCMPeripheralReset(PRCM_TIMERA1);
    
        MAP_PRCMPeripheralReset(PRCM_TIMERA2);

    2、配置定时器模式,并装载初始值

    MAP_TimerConfigure(TIMERA0_BASE, TIMER_CFG_ONE_SHOT);

    这句是配置定时器的模式,一共有五种模式可供选择:

    MAP_TimerLoadSet(TIMERA0_BASE, TIMER_A,MICROSECONDS_TO_TICKS(SLOW_TIMER_DELAY_uS/4));

    这句是装载定时器的初始值,确定到底定时多久触发中断,具体计算过程如下:

    上面函数的第三个参数就是需要装载的值,他是一个带参宏:

    #define MICROSECONDS_TO_TICKS(us) ((g_ulClockRate / 1000000) * (us))

    可以看出他的参数是SLOW_TIMER_DELAY_uS/4

    所以其实就是计算:

    (g_ulClockRate / 1000000) * (SLOW_TIMER_DELAY_uS/4))

    这里面又有两个宏:

    因此上面那个计算公式可以这样理解:

     

    (1)系统的主频是80M,他先除以1M,等于80,可以表示系统在1us内能计80个数。

    (2)后面乘(2000/4)=500,因此定时器的溢出值为80*500 = 40000,而40000/80M = 0.5ms = 500us。

    其实那个500*80也可以理解为重复500次1us。

    因此这里定时是500us。

     

    3、定时器设置完成后,要为后面定时器溢出时注册一个中断函数

        //
    
        // Hook our interrupt handlers
    
        //注册定时器中断函数
    
        MAP_TimerIntRegister(TIMERA0_BASE, TIMER_A, TimerA0IntHandler);
    
        MAP_TimerIntRegister(TIMERA1_BASE, TIMER_A, TimerA1IntHandler);
    
        MAP_TimerIntRegister(TIMERA2_BASE, TIMER_A, TimerA2IntHandler);

        其实这个时候就已经可以编写定时器中断函数了,中断函数的名字就是刚刚注册的那个名字。

     

    4、设置中断优先级并且清除之前的定时中断标志

      //
    
        // Set the appropriate interrupt priorities.
    
        //
    
        MAP_IntPriorityGroupingSet(ulPriBits);
    
        MAP_IntPrioritySet(INT_TIMERA0A, ucPriorityA0);
    
        MAP_IntPrioritySet(INT_TIMERA1A, ucPriorityA1);
    
        MAP_IntPrioritySet(INT_TIMERA2A, ucPriorityA2);
    
       
    
        //
    
        // Clear any pending timer interrupts
    
        //
    
        ulStatus = MAP_TimerIntStatus(TIMERA0_BASE, false);
    
        MAP_TimerIntClear(TIMERA0_BASE, ulStatus);
    
        ulStatus = MAP_TimerIntStatus(TIMERA1_BASE, false);
    
        MAP_TimerIntClear(TIMERA1_BASE, ulStatus);
    
        ulStatus = MAP_TimerIntStatus(TIMERA2_BASE, false);
    
        MAP_TimerIntClear(TIMERA2_BASE, ulStatus);

    5、使能定时器中断允许,当定时器溢出时跳到中断函数

        //
    
        // Enable three timer interrupts
    
        //
    
        MAP_TimerIntEnable(TIMERA0_BASE, TIMER_TIMA_TIMEOUT);
    
        MAP_TimerIntEnable(TIMERA1_BASE, TIMER_TIMA_TIMEOUT);
    
        MAP_TimerIntEnable(TIMERA2_BASE, TIMER_TIMA_TIMEOUT);

    6、最后使能定时器,开始计时

        //
    
        // Enable Timer A0
    
        //
    
        MAP_TimerEnable(TIMERA0_BASE, TIMER_A);

     

    展开全文
  • 时基单元可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。 计数器、自动装载寄存器和预分频...

    时基单元

    可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。 计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运行读写仍然有效。 时基单元包含:

    ● 计数器寄存器(TIMx_CNT)

    ● 预分频器寄存器 (TIMx_PSC)

    ● 自动装载寄存器 (TIMx_ARR)

    ● 重复次数寄存器 (TIMx_RCR)

    自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于0时,产生更新事件。更新事件也可以由软件产生。随后会详细描述每一种配置下更新事件的产生。 计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。(更多有关使能计数器的细节,请参见控制器的从模式描述)。 注意,在设置了TIMx_CR寄存器的CEN位的一个时钟周期后,计数器开始计数。 预分频器描述预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。因为这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采用。

    image
    尤其注意的是

    当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。

    ● 重复计数器被重新加载为TIMx_RCR寄存器的内容。

    ● 自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。

    ● 预分频器的缓冲区被置入预装载寄存器的值(TIMx_PSC寄存器的内容)。

    image

    那么计数时间 = (1+TIM_Prescaler )/72M)*CNT ,即计数脉冲时间周期*脉冲时间次数。

    针对中断,则会设置TIM_TimeBaseStructure.TIM_Period,该值在计数达后会产生一次溢出中断

    那么溢出中断的时间计算为:((1+TIM_Prescaler )/72M)*(1+TIM_Period )。

    使用定时器,有计数模式的   则是按照取出定时器计数值计算。(特别注意:配置的TIM_Period不能小于要达到的CNT计数值,因为定时器在达到TIM_Period值后重装计数器值,那么则无法用计数形式得到时间值)

    有使用中断的,则是以中断默认值计算。

    转载于:https://www.cnblogs.com/xiumusheng/p/10649950.html

    展开全文
  • stm32的定时器定时时间问题

    千次阅读 2018-07-07 21:02:38
    定时时间 T = (arr+1)* (prs+1)/clk。 我们看到,当计算器寄存器cnt计数到自动重装载寄存器arr的时候并不是立即产出溢出,而是在等了一个时钟。所以从0计数到36,总共计数 36+1次了。 而预分频系数+1是手册上...
  • 本文主要讲了单片机定时器初值计算公式,下面一起来学习一下
  • 以前在这里我一直以为这里配置的就是时间,然后在调频率的时候,一直不对劲,知道查阅了硬石的资料才发现,这里配置的是进入定时器中断的频率,然后要定的时间要跟据这个频率来定时的。由这个图可见,这里配置的是...
  • STM32定时器时间计算公式

    千次阅读 2020-02-05 23:18:41
    Tout = ((arr+1)(psc+1))/Tclk ; 其中: Tclk:定时器的输入时钟频率(单位MHZ) Tout:定时器溢出时间(单位为us) .TIM_Period = arr; eg;4999 .TIM_Prescaler = psc; eg:7199 To...
  • STM32 定时器 定时时间的计算

    万次阅读 2018-09-15 12:53:54
    时间) 累计 0xFFFF个频率后产生个更新或者中断(也是说定时时间到)  3、 TIM_TimeBaseStructure.TIM_CounterMode = TIM1_CounterMode_Up; //定时器 模式 向上计数     4、 TIM_TimeBaseStructure...
  • STM32定时器定时时长计算公式

    千次阅读 2013-04-09 20:59:41
    T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK 其中,TIMxCLK是其时钟频率,若是晶振为8MHz的,一般为72MHz
  • //对于毫秒定时器时间不能大于71ms,如需更大的定时,需要在定时中断函数里累加计算 //对于微妙定时器时间不能大于119us,如需更大的定时,需要在定时中断函数里累加计算 //定时时间是ms毫秒 //建议定时为5ms\...
  • 定时器周期计算公式

    千次阅读 2017-06-23 14:54:00
    例如: TIM_TimeBaseStructure.... //当定时器从0计数到10000,即为10000次,为一个定时周期10khz TIM_TimeBaseStructure.TIM_Prescaler = 71; //设置预分频:1us/clk TIM_TimeBaseStructure.TIM_ClockDi...
  • 使用公式 time = 1/CLK可以算得程序运行时间。 例如时钟周期为300MHz,测得数据为1000,则代码运行时间time = 1000 * (1/300,000,000) = 3.3 μs。 方法二:使用Count Event功能。 说明:这种方法分为硬件...
  • 使用公式 time = 1/CLK可以算得程序运行时间。 例如时钟周期为300MHz,测得数据为1000,则代码运行时间time = 1000 * (1/300,000,000) = 3.3 μs。 方法二:使用Count Event功能。 说明:这种方法分为硬件断点和...
  • STM32——TIM2定时器定时

    千次阅读 2017-12-18 17:14:00
    STM32 中一共有11 个定时器,其中2 个高级控制定时器,4 个普通定时器和2 个基本定时器,以及2 个看门狗定时器和1 个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天...
  • 关于stm32定时器定时周期计算

    万次阅读 多人点赞 2018-07-23 18:18:24
    1.TIMx(1-8),在库设置默认的情况下,都是72M的时钟;...TIM8称为高级控制定时器(advanced control timer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 定时器的时钟...
  • C8051单片机定时器定时值的算法

    热门讨论 2012-06-10 09:49:03
    以C80518020单片机为例子,介绍了单片机定时器初始值的算法,可以帮助处学这!
  • STM32 Cubemx 配置定时器定时1mS

    千次阅读 2018-11-02 17:37:00
    以建立一个定时1mS定时器为例:  1、先打开定时器    2、配置好时钟    3、配置定时器设置      重点来了,以前在这里我一直以为这里配置的就是时间,然后在调频率的时候,一直不对劲,知道查阅了硬...
  • 在JavaEE系统中,我们会经常用到定时器任务,比如每天凌晨生成什么指定数据等等,在运用这项技术时,测试可能需要灵活调整定时器工作的调度时间来辅助我们的测试工作。 下面简单介绍一下cron公式的基本语法及应用。...
  • 文章目录一、硬件连接二、寄存器描述(一)、配置定时器1、定时器模式配置2、分频值4、计数值配置5、定时值的计算公式(二)、中断标志位三、代码四、现象 一、硬件连接 LED灯阴极接地,通过三极管控制阳极导通...
  • STM32F10x定时器 ——定时时间的确定

    千次阅读 2019-08-04 18:45:52
    有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能...
  • arm定时器初值及公式 的熟悉

    千次阅读 2012-02-06 21:31:00
    示例1: 外部时钟源→通过寄存器MPLLCON得到FCLK→再通过寄存器CLKDIVN得到HCLK和PCLK。这个配置过程在启动文件中就已完成。在本开发板上,外部晶振为12MHz,...s3c2440的时钟系统就介绍到这里,我们再回到定时器的配
  • STM32定时器计算公式

    千次阅读 2019-09-24 16:29:04
    STM32定时器计算公式 先上公式: Tout = ((arr+1)*(psc+1))/Tclk ; 其中: ...Tout:定时器溢出时间(单位为us) 例如: TIM3_Int_Init(4999,7199); TIM_Period = arr; eg;4999 TIM_Prescal...
  • 在用原子的F407探索者开发板时,由于是用的野火的工程模板,导致了一些串口发送乱码、定时器定时不准的问题。如果你也有类似的问题,这个或许可以帮到你。 原因 SYSCLK 系统时钟来源有三个方面:HSI,HSE 和 PLL。在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,204
精华内容 1,681
关键字:

定时器的定时时间公式