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

福州欧派兰商贸有限公司 2026/09/09 17:40:43

问题

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

怎样建设网站扬中网站建设

3D模型文件管理革命:Windows缩略图预览终极解决方案【免费下载链接】space-thumbnailsGenerates preview thumbnails for 3D mode

2026/06/30 10:42:51

建设网站网站建设 广州

Azure 云服务综合指南1. Azure App ServiceAzure App Service 和 Web App 可互换使用。目前,App Service 计划有开发/测试、生产和隔离三个类别

2026/06/30 14:00:38

北海网站建设网站建设招聘

Windows 8 应用开发:界面、数据绑定与生命周期管理1. 可视化组件与按需用户界面在 Windows 8 应用开发中,可视化组件能够覆盖众多常见场景。你可以从第三方供应商、开源项目以及博客文章中

2026/06/30 13:25:05

深圳营销型网站建设江苏网站建设

多源地址数据融合:MGeo在金融反欺诈中的实战应用引言:地址数据融合的挑战与MGeo的破局之道在金融风控场景中,用户提交的地址信息往往来源多样、格式不一——电

2026/06/30 10:21:49

福田网站建设遵义网站建设

在当今复杂的网络环境中,网络设备配置的及时备份已成为保障业务连续性的关键环节。传统的手动备份方式不仅效率低下,还容易因人为疏忽导致关键配置丢失。本文将为网络运维工程师提供一

2026/06/30 11:03:23

永康网站建设聊城网站建设

NCM格式解密工具:3步解锁网易云音乐加密文件【免费下载链接】ncmdump项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump还在为网易云

2026/06/30 13:41:07

云南网站建设住房城乡建设部网站

你是否曾经在电脑上收到即时通讯语音却无法播放?或者在整理通讯记录时发现那些slk文件在其他设备上成了"哑巴"?这背后隐藏的正是Silk v3编码格式的技术壁

2026/06/30 14:15:09