STM32
直播中

赵辉

12年用户 904经验值
私信 关注
[问答]

串口发送函数HAL_UART_Transmit( huart1, transmit,len, timeout) 里的timeout一般设置多少比较合适?

串口发送函数 HAL_UART_Transmit( huart1, transmit,len, timeout) 里的timeout一般设置多少比较合适?这个timeout我的理解是发送1个字节的等待超时时间,那么以9600波特率为例,发送1个字节1ms都不需要,那这个值应该设置很小的值比如10就够了,但为什么网上很多人的例程里都是设置了1000甚至更大?

回帖(2)

张秀梅

2024-4-11 09:53:38
你可以写0xFFFF,表示永不超时。
举报

剪刀脚

2024-4-11 14:57:05
timeout参数是在等待数据从串口发送缓冲区传输完成的时间,而不是发送单个字节的等待超时时间。它的单位是毫秒。

timeout的合适值取决于你的应用需求和系统性能。如果你知道发送的数据量比较小且系统性能较好,可以选择较小的值,比如10毫秒。但如果发送的数据量比较大,或者系统性能较差,可能需要设置更大的值以确保数据发送完整。

一般来说,为了避免数据丢失,timeout值应该大于你的数据传输时间。如果你的传输速率为9600波特率,发送1个字节需要约1ms,建议将timeout设置为稍大于发送整个数据块所需的时间。

网上很多人设置1000或更大的timeout值可能是为了保证数据传输完成,或者考虑到了系统性能的不确定性。如果你的应用场景对实时性要求不高,可以根据实际需要适当调整timeout值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分