[开发资料] 利用回调函数的超时设计

[复制链接]
 楼主| 小小蚂蚁举千斤 发表于 2024-6-11 21:00 | 显示全部楼层 |阅读模式
基本思想:定义回调函数和回调注册函数,将定时/超时服务函数注册回调,每一次定时器中断执行一次回调,回调函数只需对计时时间TCNT做减1操作即可。

当TCNT为0时即定时/超时时间到,并置超时标志,应用程序只需判断标志即可明确定时/超时时间是否到来;回调函数和回调注册函数定义如下图所示,多个超时/定时回调函数可注册在回调函数数组中:

1.png



2.png



定时中断函数中进行遍历处理,定时中断函数处理示意代码如下图所示:

3.png

daichaodai 发表于 2024-6-11 21:24 来自手机 | 显示全部楼层
学习了,这种设计很巧妙。
AdaMaYun 发表于 2024-6-13 19:59 | 显示全部楼层
利用回调函数的超时设计很实用
OKAKAKO 发表于 2024-6-21 21:27 | 显示全部楼层
很巧妙的设计理念
中国龙芯CDX 发表于 2024-6-26 16:09 | 显示全部楼层
定义回调函数和回调注册函数,将定时/超时服务函数注册回调,每一次定时器中断执行一次回调,回调函数只需对计时时间TCNT做减1操作即可。
jf101 发表于 2024-6-27 16:35 | 显示全部楼层
利用回调函数的超时设计思想非常不错
szt1993 发表于 2024-6-29 16:00 | 显示全部楼层
定义回调函数和回调注册函数,将定时/超时服务函数注册回调,每一次定时器中断执行一次回调,回调函数只需对计时时间TCNT做减1操作即可
linfelix 发表于 2024-7-4 20:11 | 显示全部楼层
定时器的分辨率越高,超时的精度越高,但可能也会增加功耗和成本。
olivem55arlowe 发表于 2024-7-4 21:58 | 显示全部楼层
避免在回调函数中执行复杂的任务或长时间占用CPU资源,因为这可能会导致系统响应变慢或错过其他重要的中断。
chenci2013 发表于 2024-7-7 14:00 | 显示全部楼层
回调函数本身是稳定的,不会因为异常输入或逻辑错误而导致程序崩溃。
benjaminka 发表于 2024-7-7 17:02 | 显示全部楼层
在回调函数中处理异常或错误情况,比如资源获取失败或外部中断源故障。
robincotton 发表于 2024-7-9 21:04 | 显示全部楼层
回调函数应该能够处理超时或其他错误情况,并返回相应的错误码或状态。
jkl21 发表于 2024-7-10 00:09 | 显示全部楼层
如果回调函数会访问共享资源,确保使用适当的同步机制(如互斥锁)来保护临界区,避免竞态条件。
mmbs 发表于 2024-7-10 03:09 | 显示全部楼层
如果单片机支持多任务或多线程,需要确保回调函数是线程安全的,避免并发访问共享资源导致的问题。
ulystronglll 发表于 2024-7-10 06:14 | 显示全部楼层
使用标志位或状态机来管理超时状态,以便在适当的时候调用回调函数。
ccook11 发表于 2024-7-10 20:49 | 显示全部楼层
应该尽量减少中断服务程序中的代码量,避免使用复杂的算法和大量的变量。
sdCAD 发表于 2024-7-10 23:53 | 显示全部楼层
回调函数应该尽可能短小精悍,避免长时间占用处理器
weifeng90 发表于 2024-7-11 07:43 来自手机 | 显示全部楼层
回调函数主要就是函数指针的应用
sdlls 发表于 2024-7-12 09:20 | 显示全部楼层
在多任务环境中,需要注意管理共享资源,确保回调函数在执行时不会与其他任务发生冲突。
saservice 发表于 2024-7-12 12:51 | 显示全部楼层
回调函数应该有明确的入口和出口条件,避免无限循环或不确定的执行流程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

225

主题

2542

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部