You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F7基于mbedTLS建立HTTPS连接时返回-0x0050错误求助

解决STM32F7+mbedTLS建立HTTPS连接时返回-0x0050错误的排查方案

错误码含义

-0x0050 对应 MBEDTLS_ERR_SSL_TIMEOUT,本质是底层TCP接收数据超时,并非TLS握手阶段的加密/证书验证问题。

日志关键信息分析

从日志流程可以明确问题节点:

../Middlewares/Third_Party/mbedTLS/library/ssl_tls.c:2696: in_left: 0, nb_want: 5
../Middlewares/Third_Party/mbedTLS/library/ssl_tls.c:2722: ssl->f_recv(_timeout)() returned -80 (-0x0050)

在读取TLS记录头(需要5字节)的阶段,输入缓冲区为空,调用底层接收回调f_recv时超时返回错误,说明TCP链路未收到服务器的响应数据。

具体排查步骤

  • 验证TCP连接有效性
    1. 用Wireshark抓包确认TCP三次握手是否完成,是否能正常收发TCP数据包
    2. 测试普通TCP连接(如直接连接服务器443端口发送测试数据),排除TLS层之前的网络问题
    3. 检查目标服务器443端口是否开放,是否存在防火墙、路由规则拦截流量
  • 调整接收超时参数
    1. 调用mbedtls_ssl_set_timeout()增大超时阈值(例如从5000ms调整至10000ms)
    2. 检查自定义f_recv回调函数的超时逻辑,确认是否存在误返回超时的情况
  • 排查硬件与驱动
    1. 确认STM32F7的ETH外设引脚连接正常,网络模块(如W5500、ENC28J60)工作稳定
    2. 检查LWIP或其他TCP/IP栈的配置,是否开启了TCP keep-alive,是否存在丢包、断连问题
  • 检查mbedTLS配置
    1. 确认mbedTLS开启了目标服务器支持的TLS版本(如TLS1.2/TLS1.3),避免版本不匹配导致服务器拒绝响应
    2. 检查加密套件配置,确保包含服务器支持的套件
  • 调试底层接收逻辑
    在自定义f_recv回调中添加日志,记录每次调用的超时时间、返回值、实际接收字节数,定位是否真的无数据接收还是回调逻辑错误

内容的提问来源于stack exchange,提问作者Burak Türüdü

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:05:26