我正在处理一个项目,需要建立以太网连接才能配置 MQTT 协议。我正在使用 FreeRTOS 任务和 LwIP MQTT 库。尽管程序正在运行并且 MQTT 订阅出现在我的屏幕上,但几分钟后屏幕会冻结并且不会响应任何内容,除非我进行重置。我必须提到的是,我使用 Riverdi 屏幕来实现 STM32H7 微控制器,该微控制器具有默认的 FreeRTOS 任务,堆栈大小为 512 个字(2048 字节)。
如果超出堆栈大小,是否可以使我的屏幕进入 HardFault?
是的,这当然有可能。如果堆栈太小,内存中的其他内容将被覆盖(这可能会导致未定义的行为),或者可能会访问不存在的内存地址(这很可能会导致 HardFault)。