Disable the scheduler giving a task full CPU

Hallo Is it possible, from with in a task, to stop the scheduler to get full CPU time? After the task has been done, then enable the scheduler again? I have a buzzer task, that is pulsing an output to make the buzzer sound. But the sound is a bit “uneven” because of the scheduler, taking time from my task. The output must be toggle every 1 ms Thomas

Disable the scheduler giving a task full CPU

You can use vTaskSuspendAll() / xTaskResumeAll() to do this, but is sounds like a better solution would be to either make the buzzer task the top priority task (so it will always run when it wants) or move the operation to an ISR on a 1ms timer interrupt. My first guess is that you probably have FreeRTOS set up with a 1 ms basic timer tick, which is probably faster than you need it if you can set up a second timer interrupt at the 1 ms rate just for toggling this bit.

Disable the scheduler giving a task full CPU

Just to add to richard_damons reply.  If the tick interrupt is fast enough, you have the option of writing a tick hook function and having it done there.  However, normally when I have used things like buzzers I have set up a peripheral (PWM, counter, whatever) to output a signal with the required frequency with no CPU processing required other than to turn it on, off, or change pitch. Regards.