 Zděláme se do tásků. Všichni jsme vidět, co je tásk. Je to c-function. C-function je závodný kod initializace a je to návodný vždyček. Vždyček je to prototyp. Je to vývodný tásk, protože je to návodný. Je to návodný tásk, protože je to návodný. Je to těžké však, terě se zvodný závodný vždyček. Je to vývodný tásk, protože je to návodný vždyček. Vždyčí v této těřece tady je to vývodný vždyček. Vývodný tásk, protože je to těřece tady je to vývodný vždyček. Dnohy stopu je návodný, ale je to třece vysvouz Bamboře, které jsoucí závodný vždyček když se prosím, kde je to těchto důležitý shkoda, ktě se povedat, co padá do výjty. Takže to je zvědný argument, která ze výždy sklep şaháila těchto důležitý junko, kteří tož kde se koukala. JednaPower has its own stack. Priority is state where it can reside. It is created by a function of OSTRED CREATE and it is deleted if you call o WSTRED DELETE. This means if you have a task for one purpose you can instantiate it, it gets executed and it can delete itself. Když všechno je zvědět, když můžu mít v městě a v zvěděte, když všechno je zvědět, když je nezvědět. Tysk pozná ve někou elementů. První je programkod. Když jste zvědět, když jste zvědět, když jste zvědět, když jste zvědět, když jste zvědět. Je to zvědět, které skákl se příleží, když jste zvědět a je zvědět, když jste zvědět a tady je to, když můžu mít v městě. A tady je zvědět, když jste zvědět, když jste zvědět, když můžu mít v městě. A to je třeba, kde Free Artoz vytvoří data, kontext a dvěstí. Vyživlím, že tzv. tzv. tzv. nevětká pojita. Co máte pojita je z výtěnou výstek. Když se tzv. být výstek, máte tzv. tzv. originální pojita a výstek se nezavětká. Tzv. tzv. být výstek je velmi velmi velmi velmi velmi velmi velmi velmi velmi velmi velmi výstek. Když jste nám závodnout tzv. pv. pv. port Maloch, výstek se nevětká pojita. To je nacházek zvýtka z výstekelném výstek. To je boli alí se jít v týsně. Když si svoje závodit z takého týstva, to je závodit kontext podjeva, a faktivně podhávodit závodit týstvé kenteře v tým týspou a svůj týstv závodit závodit z týstva a svoje svoje týstva. A tu vidíte všechno těžká funcjána. Takže uděláváme to jako těžká funcjána, protože než jsme nezávodný. Návodný těžk, který je prototyp a těžká argumenta. Můžeme závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit. Na závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit závodnit Když jsi chtěl stále toho třeba, možná se zvuknit nebo děláte to, ale nevědějte nejvědět. Můžu se zvuknit stále, které třeba můžu opravit. Když jsou zvuknit, jsou zvuknit v rádném stále. A když se skáčení zvuknit, můžu se zvuknit v rádném stále. A když se zvuknit, můžu se zvuknit v rádném stále. A někdy se v tomse děláte stále děláte ještě, kdež jsou zvuknit nebou děláte děláte stále. A když se zvuknit, můžu se zvuknit v svého děláte stále. Když se zvuknit, můžu se zvuknit v rádném stále. Můžu se zvuknit v svého děláte stále, ktež se zvuknit. které se představili. Třeba stále můžete obtěnit s cílem cílem, které se představili a můžete vidět, že všechno to můžete dělat. Třeba prvníhoří jsou dělal než z 0 do prvníhoří maxu minus 1 a ještě dělal prvníhoří. Přešte, že prvníhoří které se představili z 0 dělat. Vstává, že dělal prvníhoří nášel svoji prvníhoří. Prvníhoří svoji prvníhoří z 0 dělal prvníhoří svoji prvníhoří You can boost its priority temporarily and when the job is finished, you can reduce it again. So playing with priorities is a good trick how to increase temporarily importance of some communication or some process and then you can again, reduce the priority or you can put the task in a suspend. There exists some system defined priorities. You can see them starting with idle priority with a value minus 3.된í je závodnit zzakonit než vždycký první první príjty a než svoje vzávodnit závodnit závodnit závodnit s nejvědějskou príjty a než své první první první příjty. Na předtížku svoje zapečí se se vzávodnit v závodnití závodnit takhle vzávodnit. On je závodovat samozřejmě o zvukování. Na měto nášto se zvukování nezávodovat dvě závodovat představí. A závodovat představí, když se půlzá výstaví. A zvukování s preemptivným módem je nejvědé můj úplně tento. A takom je to vědět, že je nejvědé, takové zvládným závodinem.üz tense are organized in the list. The list can be... The definition can be obtained in this header file. You can see what is implemented inside each list. So, there is a test value to validate whether the list is not overwritten. We have got a priority, a závodujeme se na pohlední výstvě. Závodujeme se na výstvě minulist a závodujeme se na výstvě integratívnu valiu. A nezávodujeme se na výstvě. Když se o kontexty výstvěnit, můžeme se vytvořit, když se vytvořit do kontexty výstvěnit. Protože jsme přijít sistík, který se pozná vytvědětní sistík. To je vytvědětné v port C a je vždyšný vytvědětný v assemblí, a je vždyšný na architektu. Takže na Cortex-M-0 je to vytvědětné na Cortex-M-3 a M-4. Tý vytvědětný vytvědětní sistík vytvědětní sistík vytvědětní vytvědětní sistík vytvědětní sistík. Protože se poznává sistík s vytvědětní sistík a vytvědětní sistík vytvědětní sistík. Když se nám tím mohl babieskala nám ostavit port C, vytvědětní sistík se poznává sistík. můžete kovážat občasně přémětná městí, které potřeba provotnit t mayonnaiseveský hr. Tady, která to nenazvojí, jsou žítí v místle s ním draženou, tak se to tak je to svoje. When thealystick handler enables the interrupts again, the PANDABLE SV is executed physically, and the task switch occurs. So switching time depends on the interrupt latency and on Cortex M is somehow fixed. Tohle bylo nějaké testkonditiony, které bylo kompilat by Kyle na Cortex M3. Vysvědělávalo stále, které bylo dělávalo stále, které bylo kompilat, které bylo kompilat, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Vysvědělávalo stále, které bylo kompilat. Function OSThreadCreate. Now you can see that the task one is wrapped by a macro OSThread, which takes the task one, adds the prefix and the pointer. So effectively it passes the pointer to the local variable created in the OSThreadDef. And the second parameter is the initialization value passed to the task when you create it. The creation of the task will return a thread ID. And you can store it in a handle that can be used when calling a thread related functions. So if you want to get the state of the thread, if you want to suspend the thread, you need the handle to the thread, to the task. And that's exactly what you get when you call the OSThreadCreate. We can or we should check the return value, because if it is not now, the thread creation was successful. But if it is now, there was an error. Typically it would mean that there is not enough memory in the heap to allocate the tcb and stack. So in such case, if you didn't implement the hook functionality, you know that there is a serious error and you can't use this thread. You can still operate your application, but this task wasn't created. Now the task one handle has got the type of OSThread ID. It is created with this function, with the definition of the thread created by the macro and an argument. You can as well terminate the thread by calling this function with a thread ID. You can as well pass null to delete a current thread. So if you want to terminate yourself, you pass null or zero, and that will find the appropriate value automatically and terminate the current process. You can get the task ID by calling the thread get ID function. So if you need it for other purposes, you can as well obtain it. How to control the behavior of the task? When you are within a task, you can yield. This means the thread at the current moment will be interrupted and it will cause a task switch. So if another task is waiting, the yield will cause the other task to run. It's a very effective method of not wasting the CPU time if my job is finished. So I don't spend time drinking coffee. I give the microphone to my colleague immediately. That's yielding. You can test if a thread was suspended by calling thread is suspended with its ID. And it will return whether the thread was put into the suspend state or whether it's in other blocked ready running. You can resume a suspended task. You can check the state of the task. So you can detect whether the task is ready blocked suspended. You can as well resume and suspend all tasks. This is very useful when you want to stop the execution of everything and you, for example, wait for an interrupt to resume. So if you want lower power mode, you can stop everything. And for example, on a button press that will resume all tasks, you again return to the functionality.