0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32程序超时设计

科技绿洲 来源:工程师进阶笔记 作者:工程师进阶笔记 2023-06-22 10:52 次阅读

软件超时机制

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--;};
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    356034
  • 定时器
    +关注

    关注

    23

    文章

    3248

    浏览量

    114811
  • 程序
    +关注

    关注

    117

    文章

    3787

    浏览量

    81049
收藏 人收藏

    评论

    相关推荐

    嵌入式系统的超时控制及其应用

    预期事件的循环等待是嵌入式系统应用程序的基本结构之一,在等待程序中引入超时控制是提高应用程序容错性能的重要途径。给出超时控制的一般
    发表于 05-14 13:50 16次下载

    STM32_AD程序

    STM32 AD程序程序,很好的学习资料,快来下载吧
    发表于 02-15 15:26 38次下载

    STM32_DMA程序程序

    STM32 DMA程序程序,很好的学习资料,快来下载吧
    发表于 02-15 15:27 28次下载

    stm32程序

    stm32程序
    发表于 12-17 09:33 111次下载

    TCP的超时与重传的全面解说

    TCP的超时与重传的全面解说
    发表于 08-30 11:46 7次下载
    TCP的<b class='flag-5'>超时</b>与重传的全面解说

    关于flymcu烧录stm32芯片超时的问题解决

    有时候使用FlyMcu时,会出现芯片超时无应答,无法连接的情况,如下图所示解决办法1、flymcu是否设置有问题选择 DTR 的低电平复位,RTS 高电平进 BootLoader。这个是必要的选项
    发表于 10-26 15:05 84次下载
    关于flymcu烧录<b class='flag-5'>stm32</b>芯片<b class='flag-5'>超时</b>的问题解决

    嵌入式软件定时/超时机制程序设计

    一、背景在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的
    发表于 11-03 18:36 10次下载
    嵌入式软件定时/<b class='flag-5'>超时机制程序</b>设计

    AN3109_用STM32F10x微控制器的DMA和DMA超时仿真通信外设FIFO

    AN3109_用STM32F10x微控制器的DMA和DMA超时仿真通信外设FIFO
    发表于 11-21 08:11 0次下载
    AN3109_用<b class='flag-5'>STM32</b>F10x微控制器的DMA和DMA<b class='flag-5'>超时</b>仿真通信外设FIFO

    介绍两种嵌入式软件超时(或定时)的程序设计方案

    在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的程序
    的头像 发表于 05-20 10:28 1005次阅读
    介绍两种嵌入式软件<b class='flag-5'>超时</b>(或定时)的<b class='flag-5'>程序</b>设计方案

    如何设计STM32嵌入式程序超时机制?

    在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的程序
    的头像 发表于 06-15 17:04 1446次阅读
    如何设计<b class='flag-5'>STM32</b>嵌入式<b class='flag-5'>程序</b>的<b class='flag-5'>超时</b>机制?

    写芯片超时该如何解决啊?

    写芯片超时该如何解决啊? 芯片在现代电子设备中扮演着至关重要的角色。它们是设备内部运行的核心,控制着所有的操作。然而,由于各种原因,芯片可能会发生超时问题。超时问题一旦发生,可能会导致芯片停止正常
    的头像 发表于 09-13 10:43 3457次阅读

    单片机下载程序时老是显示比特率超时是什么原因?怎么办?

    单片机下载程序时老是显示比特率超时是什么原因?怎么办? 单片机下载程序时老是显示比特率超时,这是因为在下载程序的过程中,单片机与下载工具(如
    的头像 发表于 09-13 10:43 1834次阅读

    嵌入式软件中两种超时程序设计方案

    1、背景 在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的
    的头像 发表于 10-27 15:15 692次阅读
    嵌入式软件中两种<b class='flag-5'>超时</b><b class='flag-5'>程序</b>设计方案

    socket连接超时如何处理

    在网络编程中,socket连接超时是一个常见的问题,它可能由多种原因引起,比如网络延迟、服务器负载过高或者客户端请求超时设置过短等。处理socket连接超时需要综合考虑客户端和服务器端的配置、代码
    的头像 发表于 11-01 16:48 646次阅读

    socket 连接超时处理技巧

    在网络编程中,Socket连接超时是一个常见的问题。处理超时的关键在于确保程序能够优雅地处理这些情况,避免程序崩溃或者无响应。以下是一些处理Socket连接
    的头像 发表于 11-12 14:13 421次阅读