Tips to Reduce processor load

By using the FreeRTOS tick, your task doesn’t wait for a notification, but uses a xTaskDelayUntil to wait for the time when you ISR would have notified it. If you want your task to be “notified” every 10ms then you just need to use xTaskDelayUntil to wait for 10 ms since the last time it was woken by xTaskDelayUntil. No sense adding system overhead to pass special messages. Perhaps you should look at the resources that FreeRTOS provides before trying to create something new.

Since your wait grabbed the notify value, and used it, you need to pass that value to the notify function. Your examples often are missing parameters to functions.

The point is that a task function can not return, which you do, as they aren’t “called” in the normal sense, but are created in the just called state, but there is no code to return to. (Some ports make the return go to a special error handler). Even if you added some wrapper that made the return to be like a delete me operation, that still means that you need to keep on creating the task for it to be notified and do something.

Again, this sort of code error seems to indicate a lack-of or misunderstanding of the basics of FreeRTOS operation (or just being sloppy in sample code, if omitting something, use something like … to show that).

If you are having problems with CPU over load, the stuff you have been talking about so far are unlikely to be the real cause, while slightly inefficient, they shouldn’t make the difference unless you are really at the edge, which would generally be considered too close.