 Hello, in this part I would demonstrate how to create and delete tasks from the task code in fact because it is possible as well, not only in the beginning. We will use STM32QPID in version 1.4.2 and we will test our code on Nucleo L476RG. You can test it on other STM32 based hardware and use it either STM32QPID or STM32QBMIG software. So I would use one of the existing projects which I previously created and I would start with the IOC project. In my case it is STM32L476RG micro and within system and core and this is a group I would select as a debug trace asynchronous SW which will give me two debug lines data and clock and additionally SW also single wire output which is in fact one wire trace. Additionally I need to change the timebase source from default SysTick to Timer 6. This Timer 6 is my choice as this timer do not have any input nor output channels but what really needs to be done is change this timebase from SysTick because SysTick is reserved for 3R2S usage. Then within middlewares I have selected 3R2S in version CMC's V2 version 2 and from its configuration in this part we will use task creation and task delete. This is why within include parameters please check whether VtaskDelete is enabled. So this function within 3R2S API has been added to the code which would be generated. This function name is the function name within 3R2S API. In our case it will be used by CMC's OS function which is called OS thread terminate. Then we need to define some tasks. So within tasks and kills we need only one task so second task can be created from the code but just not to spend too much time on let's say writing the code I would generate two of them and I would comment some part of the code. So task1 and task2 have the same priority this is OS priority normal the same stack size 256 words and entry function for task1 is start task1 and for task2 is start task2. There are no further modifications within the code the clock configuration is a default one so four megahertz MSI sourced without any pre-scaler nor DMA nor PLL. So I can generate the code it will take a while then within main.c file we need to move some part of the code for task2. So we will keep the definition of the handler as a global one so this would be not changed but I would comment out the priority settings for this task and I would move it as a local variable to my task1 which would be responsible for the creation of this task2. I would move this over here so within the initialization part of task1. So the role of task1 would be the creation of task2 and then within task2 we will delete ourselves. This is the code I would propose for this lab. So we have defined the attributes for task1 and we need to move the creation function from here so it is done between hardware configuration and the start of the kernel into my task1 function body. So I would put it just before our sign of life so this task action and I would put some delay afterwards so I would send my task1 into the block state for one second. This is let's say the function body for task1 and for task2 we will start with sign of life of this task then we will delete ourselves so as thread and control space terminate yes and we will select task2 handle. For those of you who were using freeR2S API in the past vTaskDelay allows you to use the null argument if you would like to delete yourself so you're executing the function to delete the task from its function body. In this case when you are using cmcsOS in version 2 it is not allowed. Null argument will be treated as an error so the function will be not executed correctly. This is why we have specified this task to handle as a global variable to be visible for this function. Let's check whether it will work correctly so after this task termination I would just add additional task action to check whether it will be executed or not. So we will try to display on a single wire interface X letter as well. After those operations let's try to compile the code. In the meantime my board is connected already to the PC. Okay so let's check whether it will be correct or there will be some errors. There should be no errors, no warnings. We can start a debug session so I click on this bug icon and after a while I should see the debug perspective. There it is. So we will use the single wire viewer ITM data console. For those of you who started with this exercise it's the first one how to enable it. So I'm using this quick search on the top right corner and I'm selecting SWV data console. This is this first choice. Once you select it you should have this visible like this. To configure it you press this configure trace button and select the ITM stimulus port as zero. So it will be one bit tracing using single wire pin, single wire output pin which is PB3. Once it's done we'll