如果任务堆栈大小超出 STM32、C 的 freeRTOS 模式,会发生什么情况

What could happen if task stack size exceeded in freeRTOS mode of STM32, C

提问人:ngrigoriadis 提问时间:11/16/2023 最后编辑:wovanongrigoriadis 更新时间:11/16/2023 访问量:30

问:

我正在处理一个项目,我需要建立以太网连接以配置 MQTT 协议。我正在使用 FreeRTOS 任务和 LwIP MQTT 库。虽然,当程序正在运行并且 MQTT 订阅出现在我的屏幕上时,几分钟后屏幕会冻结并且除非我重置,否则不会响应任何内容。我不得不提一下,我正在使用 Riverdi 屏幕来实现我的微控制器STM32H7该微控制器具有默认的 FreeRTOS 任务,堆栈大小为 512 字(2048 字节)。

如果超过堆栈大小,是否可以使我的屏幕进入HardFault?

堆栈 FreeRTOS STM32H7 HardFault

评论


答:

0赞 wovano 11/16/2023 #1

是的,这当然是可能的。如果堆栈太小,内存中的其他内容将被覆盖(这可能会导致未定义的行为),或者可能会访问不存在的内存地址(这很可能导致 HardFault)。