Sterling
DIIDevHeads IoT Integration Server
•Created by Sterling on 7/9/2024 in #middleware-and-os
Using an STM32F767ZI microcontroller with FreeRTOS
I'm using an STM32F767ZI microcontroller with FreeRTOS. I have two tasks: one receives TCP data triggered by an interrupt every 100ms, and the other handles user requests. When task-2 calls
NVIC_SystemReset
, the system hangs, typically in vPortRaiseBASEPRI
after vTaskNotifyFromISR
used by task-1.
The error message indicates a hang in vPortRaiseBASEPRI
, causing the system to become unresponsive.
Replacing the task notification with a flag in the interrupt allows the reset but is inefficient. Disabling interrupts with portDISABLE_INTERRUPTS
, suspending tasks with vTaskSuspendAll
, and entering a critical section with taskENTER_CRITICAL
didn't help. A workaround of disabling interrupts before reset works but is unsafe.
How can I reliably perform a software reset without these issues?
Here's my code guys:
How can I modify this to ensure a reliable software reset?
@Middleware & OS7 replies