网站建设制作网站建设知识

延吉市英杰墙体彩绘店 2026/09/09 17:51:12

问题

选中代码,如果发送失败加延时会导致最外围的while(1)时序变化,外围的while是每100ms循环一次的,有什么好的解决办法

AI回答

你的担忧很合理:在 for 循环里加 osDelay(100) 进行重试,如果 send 失败,实际会导致整个 while(1) 的周期变长(比如本来 100ms,失败重试后可能变成 200ms+),影响主循环的时序和实时性。

解决思路如下:

异步重试/任务分离
不要在主循环里阻塞等待重试。可以把“待重试的数据包”放到一个专门的重试队列或标志里,主循环每次轮询时都检查并优先处理重试队列。这样主循环不会被单次 send 失败拖慢。

定时器/延迟标志
记录需要重试的数据包和下次重试的时间戳,每次 while(1) 时判断是否到达重试时间,到达则重试,否则跳过。这样不会阻塞主循环。

单独线程/任务
如果系统支持,可以把发送和重试逻辑放到单独的线程或任务里,主循环只负责分发数据,发送线程负责重试和延时。

非阻塞重试(推荐)
只做一次 send,失败后记录重试标志和时间,下次 while(1) 到时再尝试重发,不用 osDelay 阻塞。这样主循环时序不会受影响。

相关代码

// 多包独立非阻塞重试机制 static uint32_t retry_tick[20] = {0}; if(msg.vehicle_debug_period == 0) { uint32_t now_tick = osKernelGetTickCount(); // 先处理所有到达重试时间的包 for(int i=0; i<20; i++) { if(vds_ptr->data_len[i] >
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

建设部网站长沙营销型网站建设

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常

2026/06/30 12:01:28

桂林网站建设宁波网站建设公司

在当今数字时代,网盘已成为我们日常工作和生活中不可或缺的工具。然而,面对下载速度受限、必须安装官方客户端、无法使用专业下载工具等痛点,你是否渴望一种更高效的解

2026/06/30 10:08:48

连云港网站建设官方网站建设

LangFlow社交媒体内容审核工作流在社交平台内容爆炸式增长的今天,每天都有数以亿计的文本、图片和视频被上传。如何高效识别并处理违规内容——从仇恨言论到网络欺凌,再到隐性

2026/06/30 12:47:33

网站建设广告宜兴网站建设

QQScreenShot截图工具完整使用教程:从入门到精通【免费下载链接】QQScreenShot电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为Scr

2026/06/30 14:19:40

怎样建设网站永州网站建设

文章目录前言【视频教程】1.关于FastSend2.Docker部署3.简单使用FastSend4.安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结FastSend 与 cpola

2026/06/30 10:27:20

成都网站建设网站建设空间

PyTorch-CUDA-v2.9 镜像中集成 Sphinx 的可行性与实践在现代 AI 工程实践中,一个常见的困惑是:我们是否能在专注于模型训练的容器环境中,

2026/06/30 12:53:33

南通网站建设机械网站建设

Vim命令行模式实用技巧1. 使用Tab键补全Ex命令在Vim的命令行中,如同在shell里一样,我们可以使用<Tab>键来自动补全命令。Vim会依据已输入的内容智能地给出补全建议。例如,

2026/06/30 12:30:31

商丘网站建设网站建设首页

深入理解 Linux USB 电源管理1. 引言在嵌入式系统中,电源管理是一项至关重要的需求。USB 规范为 USB 设备和主机定义了相应的电源管理方法,而 Linux 内核则实现了必要的电源管理框架

2026/06/30 11:32:57

宝安网站建设东莞网站建设公司

YOLOFuse插件机制设想:支持用户自定义融合模块在智能监控、无人系统和工业巡检日益依赖视觉感知的今天,单一可见光摄像头在夜间、烟雾或低光照环境下常常“力不从心”。目标模

2026/06/30 12:51:03