Eine kleine Frage über den freeRTOS Taskplaner:FreeRTOS Kontextschalter - xQueueSend
Ist die Scheduler Aufgabe innerhalb der xQueueSend Funktion aufgerufen oder wird es beim nächsten System tick nennen?
Eine kleine Frage über den freeRTOS Taskplaner:FreeRTOS Kontextschalter - xQueueSend
Ist die Scheduler Aufgabe innerhalb der xQueueSend Funktion aufgerufen oder wird es beim nächsten System tick nennen?
FreeRTOS führt immer die Task mit der höchsten Priorität aus, die ausgeführt werden kann. Das heißt, wenn Sie eine Queue, Semaphore, direkte Aufgabenbenachrichtigung, Ereignisgruppe, Mutex (alles andere?) So verwenden, dass eine andere Aufgabe nicht blockiert und die entsperrte Aufgabe eine höhere Priorität hat als die laufende Aufgabe, Dann schaltet der Scheduler auf die entsperrte Task um. Eine Ausnahme ist, wenn der Anwendungs-Writer den Scheduler durch Aufrufen von vTaskSuspendAll() gesperrt hat. In diesem Fall wird die entsperrte Task solange ausgesetzt, bis der Anwendungs-Writer xTaskResumeAll() aufruft - in diesem Fall die Task mit der höchsten Priorität run wird sofort gestartet (bevor der Aufruf von xTaskResumeAll() even zurückgibt).
Ich hasse es, die gleiche Frage an mehreren Orten zu beantworten, so werde einfach einen Link zu meiner vorherigen Antwort https://sourceforge.net/p/freertos/discussion/382005/thread/f0cb1a73/ (die auch in der erscheinen wird Support-Forum-Archiv] (http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html) am Ende der Woche). – Richard