[STM32F1] HAL_UART_Transmit 函数中 timeout 参数写 -1 的作用是什么?

[复制链接]
376|78
xinpian101 发表于 2026-7-2 14:29 | 显示全部楼层
在单片机正常运行场景下:程序几乎不可能等到超时触发。
MessageRing 发表于 2026-7-3 17:10 | 显示全部楼层
-1超时表示无限等待,适合数据必须全部发送完成的场景,防止数据丢失。
SophiaOP 发表于 2026-7-4 21:07 | 显示全部楼层
写-1就是无限等待,适合主循环就等发送完成的场景。记得检查串口状态寄存器,防止数据丢失。
单芯多芯 发表于 2026-7-5 14:17 | 显示全部楼层
可以通过串口接收缓冲区检查是否有数据,或者使用串口通信协议中的应答信号来判断发送是否正常。
ClarkLLOTP 发表于 2026-7-6 12:01 | 显示全部楼层
设置为-1是为了让函数在数据完全发送完成之前保持阻塞,避免在数据未发送完毕时退出。
digit0 发表于 2026-7-7 15:08 | 显示全部楼层
设置timeout是为了限制函数在等待发送完成时不会无限期等待,确保程序不会因为等待过久而停滞。
EmmaTT 发表于 2026-7-8 12:42 | 显示全部楼层
设置 -1 是为了阻塞式发送,保证数据全部发送完毕才返回,适合主循环只做发送任务的情况。
理想阳 发表于 2026-7-12 11:48 | 显示全部楼层
无限等待模式下,程序可能因等待条件始终不满足而无法继续执行,要确保等待条件能适时满足,防止程序“卡死”。
玛尼玛尼哄 发表于 2026-7-13 21:16 | 显示全部楼层
-1 是有符号 int,强制转为无符号uint32_t后,数值为 0xFFFFFFFF(32 位无符号最大值),HAL 库内部将其识别为永久等待、永不超时。
线稿xg 发表于 2026-7-14 17:20 | 显示全部楼层
代码中的“标准配置”是指默认设置,不是特定要求,可以根据实际需求调整。
AIsignel 发表于 2026-7-18 09:20 | 显示全部楼层
当设置timeout=-1,程序可能无限等待,导致系统停滞。请确保设置合适的超时值以避免系统挂起。
鹿鼎计 发表于 2026-7-20 16:39 | 显示全部楼层
设置-1通常是表示发送状态。判断发送完成,可以检查硬件标志位,或使用中断检测。
小熊01 发表于 2026-7-23 11:07 | 显示全部楼层
通过观察接收到的数据与发送的数据是否一致来检测串口发送是否正常。如果数据匹配,发送正常;否则,发送存在问题。
zhuomuniao110 发表于 2026-7-25 17:31 | 显示全部楼层
简单设备、不会出现串口卡死,必须保证数据百分百发完,不允许丢数据,不在乎阻塞耗时。
LinkMe 发表于 2026-7-26 14:01 | 显示全部楼层
超时时间设置需考虑任务复杂度和系统响应要求,一般取任务所需时间的1.5到2倍。
lllook 发表于 2026-7-27 23:10 | 显示全部楼层
标准配置指的是默认设置,可根据实际情况灵活更改。
理想阳 发表于 2026-7-29 10:46 | 显示全部楼层
长时间等待让程序不动,得用其他方法代替,别在快速响应的任务里用。
香水城 发表于 2026-7-29 17:05 | 显示全部楼层
看来好奇了,

你不妨看看这个函数的定义原型,这里写-1,意味着是个什么数据,即-1的补码是多少。 这个值很大,但也是有限的。
Moon月 发表于 2026-8-1 08:05 | 显示全部楼层
根据需求设响应时长,确保准确且不拖慢速度。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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