我目前正在编写代码以将操纵杆数据从 PC 发送到
STM32 Nucleo 板。我使用 pygame 读取操纵杆值并使用 python 的套接字库通过路由器将数据发送到 MCU。MCU 和 PC 都连接到路由器。在 MCU 端,我使用了 STM32 Cube pkg 中给出的 LWIP 的修改示例代码。MCU 还运行一个运行 LWIP 的 FreeRTOS 调度程序。我能够让它在 2 线程 FreeRTOS 代码中完美运行。但是,当我将代码转移到 16 线程代码 [主项目] 时,LWIP 在几次交换后停止工作。从某种意义上说,我在 4-5 次交换后没有收到任何 ping。
为解决该问题而进行的一些实验
- 将PC端的发布频率降低到20hz。这会增加交换持续时间,但会在几分钟后失败。
- 尝试将 FreeRTOS 配置的 ConfigMaxPriority 参数从 56(cube ide 默认值)减少到 16。[操作时间增加]
- 尝试更改 FreeRTOS 主堆内存和 LWIP 线程堆栈内存 [没有区别]
我认为,这是一个内存问题。但不知道如何解决。有人可以就此给我建议吗?