如何实现嵌入式软件定时/超时机制?

文中给出了两种软件定时机制的设计方案,其目标在于,让各位嵌入式软件工程师摒弃CPU阻塞等待延时的方式,使用硬件定时器作为时基,在其上面实现软件定时器及时间到达后的回调函数。
这是两种十分常用且实用的软件定时方式,对良好的程序架构设计具有很好的借鉴作用。
以下是原文。

软件超时机制

1、背景

在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的程序设计方案。

2、方案一

基本思想:定时器中断使用一个变量TICK,中断间隔时间t,在准备定时开始时读取此时刻的TICK,在程序运行过程中实时读取当前的TICK信息并计算即可。
因此在时间计算时只需计算开始STARTTICK和结束ENDTICK即可完成时间计算。时间计算T=(ENDTICK-STARTTICK)*t;使用一个定时器中断每t时间处理一次中断,中断里面时间计数值s_u32TCNT++,如下图所示:
图片
程序中定义一个结构体来保存超时开始和超时结束时间,结构体定义如下图所示:
图片
在需要做定时超时处理的地方实时的获取当前s_u32TCNT并赋值给u32EndTimeTick,计算开始u32StartTimeTick和结束时u32EndTimeTick的时间差来判断时间是否到来即可,程序设计示意代码如下图所示:
图片

3、方案二

基本思想:定义回调函数和回调注册函数,将定时/超时服务函数注册回调,每一次定时器中断执行一次回调,回调函数只需对计时时间TCNT做减1操作即可。
当TCNT为0时即定时/超时时间到,并置超时标志,应用程序只需判断标志即可明确定时/超时时间是否到来;回调函数和回调注册函数定义如下图所示,多个超时/定时回调函数可注册在回调函数数组中:
图片
图片
定时中断函数中进行遍历处理,定时中断函数处理示意代码如下图所示:
图片

4、对比总结

方案一优点在于中断执行单元执行内容少,代码操作容易理解,缺点是应用中实时的进行计算开始和结束TICK差值,代码执行效率不高。
方案二优点在于将超时函数注册在回调中即可,程序扩展性较好,不用做过多的数值计算,代码执行效率相对较高,缺点是定时中断中需要遍历所有已注册的对调,中断执行内容相对较多。

STM32程序超时设计

在程序设计中,出现以下类似语句,是非常不可靠的,很有必要加入超时处理!
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
以下在stm32的system_stm32f10x.c文件中,判断外部晶振起振的程序。可以参考,在以后的程序中借鉴。
#define HSE_STARTUP_TIMEOUT   ((uint16_t)0x0500) /*!< Time out for HSE start up */
/* Wait till HSE is ready and if Time out is reached exit */
do
{
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
I2C 读写EEPROM添加超时:
uint16_t i = 0x0fff;
while ((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))&&i){i–;};

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/80729.html

(0)
guozi's avatarguozi
上一篇 2024年5月31日 上午10:21
下一篇 2024年5月31日 上午10:22

相关推荐

  • 公司邮箱服务器配置指南(附详细步骤)

    公司邮箱服务器,作为网络互联网服务器行业的重要一环,其配置对于公司的发展至关重要。但是,很多公司在选择和配置邮箱服务器时都会遇到各种问题。那么,什么是公司邮箱服务器?它又有哪些重要…

    行业资讯 2024年4月17日
    0
  • android 开发环境搭建步骤,android开发环境搭建教程

    如果你想成为一名优秀的Android开发工程师,搭建高效、稳定的开发环境至关重要。但是如何搭建Android开发环境呢?这似乎是困扰很多初学者的问题。今天我们就来讨论这个话题,解释…

    行业资讯 2024年4月3日
    0
  • 沈阳seo公司

    你是否听说过“SEO”这个名词?它是一种能够帮助企业在搜索引擎中获得更多曝光度的技术。在当今竞争激烈的市场环境下,如何提升企业的知名度和影响力?SEO就是一个不可忽视的关键。那么,…

    行业资讯 2024年4月10日
    0
  • ip检测被墙,ip被墙多久解封

    互联网行业充满了各种各样的技术和术语,但其中最受关注的是IP封锁。那么什么是IP被封呢?IP为什么会被封呢?更重要的是,一般情况下,一个IP会被封多久? 什么是IP被墙? 1. 什…

    行业资讯 2024年5月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注