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

河南京中实业有限公司 2026/09/09 20:17:45

问题

选中代码,如果发送失败加延时会导致最外围的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] >
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

建设局网站常德网站建设

背景透明化终极解决方案:AI一键操作高效处理【免费下载链接】transparent-backgroundThis is a background removing tool powere

2026/06/30 14:05:08

大连网站建设太原网站建设

这是一个 Rust 时间库中的Duration结构体实现,提供高精度的时间跨度表示。1. 主要特性纳秒级精度:由整秒和纳秒部分组成支持负值:与标准库的std:

2026/06/30 13:07:04

潍坊网站建设涪陵网站建设

可溶于水的3D打印电子器件助力快速回收诸如蓝牙扬声器等电子设备,如今可以利用一种能在数小时内溶于水的材料进行3D打印。这项技术使得设计者能够快速制作原型,让由此产生的电子废

2026/06/30 13:59:38

常州网站建设免费企业网站建设

你是否曾梦想创作自己的文字冒险游戏,却被代码的复杂性劝退?JavaQuestPlayer正是为你量身打造的一站式解决方案!🚀 这款基于Java

2026/06/30 12:34:01

海南网站建设赣州网站建设

第一章:智谱Open-AutoGLM智能体概述智谱AI推出的Open-AutoGLM是一种面向自动化任务处理的智能体框架,基于大规模语言模型GLM构建,旨在实

2026/06/30 11:20:25

珠海网站建设网站建设广告

高效语音克隆工具推荐:GPT-SoVITS vs 其他TTS对比在短视频、播客和虚拟数字人内容爆发的今天,个性化语音合成正从“能说”走向“像你”。想象一下,只

2026/06/30 10:51:22

九江网站建设绍兴网站建设

欢迎各位来到今天的技术讲座。今天,我们将深入探讨分布式系统领域中一个既基础又核心的问题:在缺乏一个绝对、统一的物理时钟的情况下,我们如何定义事件的“先后”顺序

2026/06/30 11:55:28

网站建设技术服装网站建设

如果你正在寻找一个既高效又灵活的Markdown解析解决方案,MD4C可能会成为你的新宠。这个用纯C语言编写的解析器不仅遵循CommonMark标准,更在性能优化和易用性方

2026/06/30 11:16:54

医院网站建设网站建设员

FontForge完整指南:从零开始创建专业字体的终极教程【免费下载链接】fontforgeFree (libre) font editor for Windows, Mac OS X

2026/06/30 13:34:36