一种扩展单片机硬件定时器的方法

文档序号:8281723阅读:382来源:国知局
一种扩展单片机硬件定时器的方法
【技术领域】
[0001]本发明涉及一种扩展单片机硬件定时器的方法。
【背景技术】
[0002]在单片机软件设计中,经常要按时间顺序的发展设计任务进程,而标准型号的51系列单片机只有4个硬件定时器,部分定时器还会被一些外设部件占用,如UART等,可用作时间控制的定时器是非常少的。如果在硬件定时器中断中直接处理进程任务,则会使软件结构显得杂乱,为软件维护带来困难。

【发明内容】

[0003]本发明的目的在于克服现有技术的不足,提供一种扩展单片机硬件定时器的方法,本发明与基于消息队列的单片机操作系统联合使用,可为不同的任务进程提供任务所需要的定时器触发消息,运行效率更高,使用更加灵活。
[0004]本发明的目的是通过以下技术方案来实现的:一种扩展单片机硬件定时器的方法,它包括以下步骤:
S1:定义定时信息结构类型,定时信息类型为包括时间值变量和消息值变量的结构类型,约定消息值变量为O时表示定时信息无效;
S2:定义定时信息数组,用于存放定时信息,在初始化定时信息数组时,将每个组元的消息值变量设为O ;
S3:定义基准时间变量,用于在硬件定时器中断服务程序中加1,作为整个定时器扩展的基准时间;
54:设置硬件定时器的中断周期,使硬件定时器按一定周期调用中断服务程序;
55:使能定时器的函数,参数包括定时值和消息值,函数程序包括以下子步骤:
551:查找定时信息数组是否存在参数消息值的定时信息,如果存在则用新的定时信息覆盖原有的定时信息,如果不存在则查找一个消息值为O的定时信息;
552:判断函数参数的定时值是否为0,如果不为0,则将函数参数的定时值与基准时间变量相加,并将相加的结果存入步骤S51找到的定时信息的时间值变量中,将消息值存入步骤S51找到的定时信息的消息值变量中;如果为0,则将步骤S51找到的定时信息中的消息值清O ;
56:为硬件定时器编写中断服务程序;中断服务程序包括以下子步骤:
561:基准时间变量加I ;
562:循环比对定时信息数组中消息值不为O的定时信息的时间值,如果时间值和基准时间相等,则发送该定时信息指定的消息,然后设置定时信息消息值为O来释放该定时信息。
[0005]根据步骤S1、S2、S3所述,定义了扩展定时器所需要的数据结构,其包括数据类型为结构的定时信息,数据类型为定时信息的数组,基准时间变量。定时信息数组的组元数量根据整个软件系统同时用到定时器的最大数量确定。
[0006]根据步骤S4所述,设置单片机的一个硬件定时器间隔一个周期产生一次中断,一个周期为I毫秒。
[0007]根据步骤S5所述,为各任务进程使用定时器设计一个函数,参数包括定时值和消息值。如果参数中的定时值不为零,则表示参数中的定时值时间到时,向消息队列中存入一个参数消息值定义的消息;如果参数中的定时值为零,则表示释放定时信息中消息值为参数指定消息值的定时信息(将定时信息的消息值设为O)。该函数可多次调用来为不同任进程设置一个定时器。
[0008]根据步骤S6所述,在硬件定时器产生中断时,硬件自动调用中断服务程序,每次进入中断服务程序时,基准时间变量增量,然后循环比对所有的定时信息,当定时信息的消息值不为零且时间值与基准时间值相等时,向消息队列中存入定时信息中指定的消息值。
[0009]本发明的有益效果是:该方法只占用I个硬件定时器,编写软件代码结构简洁、运行高效,在基于消息队列的单片机操作系统中进行时间相关的多任务设计时,使用灵活,能够满足各任务进程对时间控制的需要。
【附图说明】
[0010]图1为使能定时器函数程序流程图;
图2为硬件定时器中断服务程序流程图。
【具体实施方式】
[0011]下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
[0012]一种扩展单片机硬件定时器的方法,它包括以下步骤:
S1:定义定时信息结构类型,定时信息类型为包括时间值变量和消息值变量的结构类型,约定消息值变量为O时表示定时信息无效;
S2:定义定时信息数组,用于存放定时信息。在初始化定时信息数组时,将每个组元的消息值变量设为O ;
S3:定义基准时间变量,用于在硬件定时器中断服务程序中加1,作为整个定时器扩展的基准时间;
54:设置硬件定时器的中断周期,使硬件定时器按一定周期调用中断服务程序;
55:使能定时器的函数,参数包括定时值和消息值,程序流程如图1所示,函数程序包括以下子步骤:
551:查找定时信息数组是否存在参数消息值的定时信息,如果存在则用新的定时信息覆盖原有的定时信息,如果不存在则查找一个消息值为O的定时信息;
552:判断函数参数的参数定时值是否为0,如果不为0,则将函数参数的定时值与基准时间变量相加,并将相加的结果存入步骤S51找到的定时信息的时间值变量中,将消息值存入步骤S51找到的定时信息的消息值变量中;如果为0,则将步骤S51找到的定时信息中的消息值清O ;
56:为硬件定时器编写中断服务程序,程序流程如图2所示,中断服务程序包括以下子步骤:
561:基准时间变量加I ;
562:循环比对定时信息数组中消息值不为O的定时信息的时间值,如果时间值和基准时间相等,则发送该定时信息指定的消息,然后设置定时信息消息值为O来释放该定时信息。
[0013]根据步骤S1、S2、S3所述,定义了扩展定时器所需要的数据结构,其包括数据类型为结构的定时信息,数据类型为定时信息的数组,基准时间变量。定时信息数组的组元数量根据整个软件系统同时用到定时器的最大数量确定。
[0014]根据步骤S4所述,设置单片机的一个硬件定时器间隔一个周期产生一次中断,一个周期为I毫秒。
[0015]根据步骤S5所述,为各任务进程使用定时器设计一个函数,参数包括定时值和消息值。如果参数中的定时值不为零,则表示参数中的定时值时间到时,向消息队列中存入一个参数消息值定义的消息;如果参数中的定时值为零,则表示释放定时信息中消息值为参数指定消息值的定时信息(将定时信息的消息值设为O)。该函数可多次调用来为不同任进程设置一个定时器。
[0016]根据步骤S6所述,在硬件定时器产生中断时,硬件自动调用中断服务程序,每次进入中断服务程序时,基准时间变量增量,然后循环比对所有的定时信息,当定时信息的消息值不为O且时间值与基准时间值相等时,则向消息队列中存入定时信息中指定的消息值。
[0017]本发明中先分配一个存放定时信息的数组和一个作为基准时间的基准时间变量;再使用一个硬件定时器产生一定周期的中断;最后在中断服务程序中完成定时器的扩展。在每次调用中断服务程序时,基准时间变量加1,然后与各定时值进行比对,如相等,则发送定时信息指定的消息。
【主权项】
1.一种扩展单片机硬件定时器的方法,其特征在于:它包括以下步骤: S1:定义定时信息结构类型,定时信息类型为包括时间值变量和消息值变量的结构类型,约定消息值变量为O时,表示定时信息无效; S2:定义定时信息数组,用于存放定时信息,在初始化定时信息数组时,将每个组元的消息值变量设为O ; S3:定义基准时间变量,用于在硬件定时器中断服务程序中加1,作为整个定时器扩展的基准时间; 54:设置硬件定时器的中断周期,使硬件定时器按一定周期调用中断服务程序; 55:使能定时器的函数,参数包括定时值和消息值,函数程序包括以下子步骤: 551:查找定时信息数组是否存在参数消息值的定时信息,如果存在则用新的定时信息覆盖原有的定时信息,如果不存在则查找一个消息值为O的定时信息; 552:判断函数参数的定时值是否为O,如果不为O,则将函数参数的定时值与基准时间变量相加,并将相加的结果存入步骤S51找到的定时信息的时间值变量中,将消息值存入步骤S51找到的定时信息的消息值变量中;如果为O,则将步骤S51找到的定时信息中的消息值清O ; 56:为硬件定时器编写中断服务程序;中断服务程序包括以下子步骤: 561:基准时间变量加I ; 562:循环比对定时信息数组中消息值不为O的定时信息的时间值,如果时间值和基准时间相等,则发送该定时信息指定的消息,然后设置定时信息消息值为O来释放该定时信息。
2.根据权利要求1所述的一种扩展单片机硬件定时器的方法,其特征在于:所述步骤S1、S2、S3,定义了扩展定时器所需要的数据结构,包括数据类型为结构的定时信息、数据类型为定时信息的数组和基准时间变量,定时信息数组的组元数量根据整个软件系统同时用到定时器的最大数量确定。
3.根据权利要求1所述的一种扩展单片机硬件定时器的方法,其特征在于:所述步骤S4,设置单片机的一个硬件定时器间隔一个周期产生一次中断,所述的一个周期为I毫秒。
4.根据权利要求1所述的一种扩展单片机硬件定时器的方法,其特征在于:所述步骤S5,为各任务进程使用定时器设计一个函数,参数包括定时值和消息值,如果参数中的定时值不为O,则表示参数中的定时值时间到时,向消息队列中存入一个参数消息值定义的消息;如果参数中的定时值为O,则表示释放定时信息中消息值为参数指定消息值的定时信息,并将定时信息的消息值设为O。
5.根据权利要求1所述的一种扩展单片机硬件定时器的方法,其特征在于:所述步骤S6,在硬件定时器产生中断时,硬件自动调用中断服务程序,每次进入中断服务程序时,基准时间变量增量,循环比对所有的定时信息,当定时信息的消息值不为O且时间值与基准时间值相等时,则向消息队列中存入定时信息中指定的消息值。
【专利摘要】本发明公开了一种扩展单片机硬件定时器的方法,与基于消息队列的单片机操作系统联合使用,可为不同的任务进程提供任务所需要的定时器触发消息。本发明中先分配一个存放定时信息的数组和一个作为基准时间的基准时间变量;再使用一个硬件定时器产生一定周期的中断;最后在中断服务程序中完成定时器的扩展。在每次调用中断服务程序时,基准时间变量加1,然后与各定时值进行比对,如相等,则发送定时信息指定的消息。本发明的有益效果是:该方法只占用1个硬件定时器,编写软件代码结构简洁、运行高效,在基于消息队列的单片机操作系统中进行时间相关的多任务设计时,使用灵活,能够满足各任务进程对时间控制的需要。
【IPC分类】G05B19-042
【公开号】CN104597820
【申请号】CN201510071478
【发明人】李俊画, 马剑, 朱永, 莫平勇
【申请人】四川天邑康和通信股份有限公司
【公开日】2015年5月6日
【申请日】2015年2月11日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1