portNVIC_INT_CTRL_REG == 0x3803 and portVECTACTIVE_MASK == 0xFF
I’m not calling this from an interrupt, what am I missing? The task sends a queue, then calls ulTaskNotifyTake to wait for an interrupt that calls using
That looks like somehow you are calling vPortEnterCritical from within an ISR, which isn’t allowed. Look at the stack trace back from the call to see what is happening.
The configASSERT checks that the code is not executing within an interrupt or exception handler when entering a critical section. portNVIC_INT_CTRL_REG refers to the Interrupt Control and State Register (ICSR) on ARM Cortex-M. portVECTACTIVE_MASK (0xFF) extracts the VECTACTIVE field (bits 0-8), which indicates the currently active exception (interrupt or system exception). If VECTACTIVE == 0, the CPU is in thread mode (executing a task); otherwise, it is in handler mode (executing an ISR/exception).
Here, it seems likeconfigASSERT is triggered because the application ISR incorrectly calls a non-FromISR API or directly invokes taskENTER_CRITICAL() (which, in turn, calls vPortEnterCritical()). Can you please re-check your application code for the same?