ucos-iii学习之软件定时器管理

定时器递减其计数值,当计数值为0时,就是定时期满的时候。此时通过回调函数执行相应的操作。回调函数是用户定义的,当定时期满时可以被调用。
定时器的分辨率决定于时基频率。

定时器API总结
这里写图片描述

1.定时器可以设置为3种模式:一次性定时模式,无初始周期模式,有初始周期模式。
(1)一次性定时模式
定时器会递减被设置初始的定时值,当该值为 0 时就会调用回调函数并停止定时器。
(2)无初始定时周期模式
当定时期满时,回调函数被调用,定时值被定时周期值满载,如此周期性的反复。
(3)有初始定时周期模式
第一周期的递减值由 OSTmrCreate()中的参数”dly”设置,以后的重载值由”period”值确定。调用 OSTmrStart()重新开始。
2.内部定时器管理-定时器状态
OSTmrStateGet()获得定时器的状态。
OSTmrRemainGet()获得剩余定时时间。
3.定时器内部管理-OS_TMR
OS_TmrTask()是一个周期性的任务,它使用时基中断源作为它的时钟计数源。
(1)回调函数是在定时器任务被切换后执行的。这意味着定时器任务需要有足够的堆栈空间供回调函数去执行。
(2)回调函数是在根据定时器队列中依次存放的。所以期满后回调函数是依次被执行的。
(3)定时器任务的执行时间决定于:有多少个定时器期满,执行定时器中的回调函数需多少时间。因为回调函数是用户提供,它可能很大 程度上影响了定时器任务的执行时间。
(4)定时器中的回调函数不能等待事件的发生,因为这样可能会让定时器任务被挂起。
(5)回调函数被执行时会锁调度器,所以你必须让回调函数尽可能地短。
4.内部定时器管理-定时器列表
定时期列表类似于时基列表。

IST P=16C73 INCLUDE "P16C73.INC" CBLOCK 30H LAY1,LAY2,LAY3,RAM ENDC ORG 00H INC CLRF PORTB CLRF PORTC BSF STATUS,5 CLRF PORTC CLRF PORTB BCF STATUS,5 ;**************************TMR1初始化************************** BSF STATUS,5 MOVLW 00H MOVWF PIE1 ;关TMR1中断 BCF STATUS,5 MOVLW 00H MOVWF T1CON ;设TMR1分频为1;1内部时钟,关TMR1 BCF INTCON,7 ;关总中断 MOVLW 00H ;0DFH 和0B1H 是20HZ, MOVWF TMR1L MOVLW 00H ; MOVWF TMR1H ;设初值为FFF6,就是100KHZ BCF PIR1,0 ;清TMR1标志位 BSF INTCON,6 ;开外设中断 BSF INTCON,7 ;开总中断 BSF T1CON,0 ;启动TMR1 GOTO MAIN ;***************************************************************** MAIN MOVLW 0FFH MOVWF PORTC CALL LAY1S ; 灯亮1S MOVLW 00H MOVWF PORTC CALL LAY2S ; 灯暗2S BTFSS PIR1,TMR1IF GOTO $ ; 等到溢出 MOVLW 0FFH MOVWF PORTC CALL LAY2S ;亮2S ;************************TMR1初始化********************************* MOVLW 00H MOVWF T1CON ;设TMR1分频为1;1内部时钟,关TMR1 BCF INTCON,GIE ;关总中断 MOVLW 00H MOVWF PORTC CALL LAY2S ;暗2S MOVLW 0FEH ;0DFH 和0B1H 是20HZ, MOVWF TMR1L MOVLW 0FFH MOVWF TMR1H ;设初值为FFF6,就是100KHZ BCF PIR1,TMR1IF ;清TMR1标志位 BSF INTCON,PEIE ;开外设中断 BSF INTCON,GIE ;开总中断 BSF T1CON,TMR1ON ;启动TMR1 ;******************************************************************** AA BTFSS PIR1,TMR1IF ; 判断有没有溢出 GOTO $-1 ;ON COMF PORTC ;YES GOTO AA LAY1S MOVLW 037H MOVWF LAY3 MOVLW 0F0H MOVWF LAY1 MOVLW 018H MOVWF LAY2 DECFSZ LAY2 GOTO $-1 DECFSZ LAY1 GOTO $-5 DECFSZ LAY3 GOTO $-9 RETURN LAY2S MOVLW 069H MOVWF LAY3 MOVLW 0F0H MOVWF LAY1 MOVLW 018H MOVWF LAY2 DECFSZ LAY2 GOTO $-1 DECFSZ LAY1 GOTO $-5 DECFSZ LAY3 GOTO $-9 RETURN END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值