 So, let's start the hands-on. There are different ways we can start the hands-on. You can start from the homework screen that you currently got. You can start a new Cubemax project inside your cube IDE. Or in the case of mine, I'm going to start a brand new example in Cubemax itself. So I'm going to start this way. You can do whichever of those other two ways is best suited for you. But if you want to start on the full Cubemax, then please do and you can follow along with me. Or as I say, you can start a new project inside the cube IDE. So I first of all need to go and select our device. I will access the MCU selector. The device we have on our nuclear board is the STM32U575ZIT6Q. It's the device that's on our board. So it's narrowed my list down to one. I like that item. It's a great section there where you can go and get data sheets and have a look at the features of the device. And we're going to start the project. So if you're doing this within the cube IDE, you have to go and to file, start new STM32U projects. Or you can just sit and wait at the homework screen and we're going to add on to what you've done in that homework screen. So there are the two options. Because we're not focusing on security today, so we're going to do it without trust zone activated. So I'll say OK to that. And it's now going to go and build my new project. There we go. So hopefully everybody should be at a pinout screen. Now, if you've done it in the cube IDE, I think you've got to name it first and select those a couple of parameters that you saw around us doing the homework. And once we're at the pinout screen, our first step will be to select the analog pins. So we're going to select the ADC features. I will expand analog. I will select ADC number one. And we need to enable channels one, two, three and four to be single ended. Two, three, channel four. So that should have all pins on PC0 to PC3 on your pinout diagram. And that is your ADC pins assigned onto the chip. Now we need to set some parameters for our ADC. I'll readjust my screen size so we can see more of the parameters. So we want to be in continuous conversion mode. So we need to enable continuous conversion mode. We want to enable low power weights. So this will help us preventing any overruns. In the regular conversion mode, we want to enable regular conversions. So we're not going to use the injected conversion mode. We're just going to use regular conversion mode for this example. The next feature we need to enable is in the conversion data management. And in here, we want to make sure we're connecting the ADC to the DMA. And we're going to use DMA circular mode. So that's going to provide all the relevant requests in hardware between the ADC cell and the DMA cell inside the device. So the number of conversions we're doing is going to be four. So we've assigned four pins here on our pinout diagram. So we need to change the number of conversions in our regular conversion mode to be four. And now we need to give the rank of each of these channels so that we know exactly what order we've got. So if I expand rank, there we go. So the channel that's going to be first in the list is going to be channel one. That's correct. The item that's second in the list is going to be channel two. Rank two will be channel two. Rank three will be channel three. And rank four will be channel four. So if you had a particular order that you wanted to do, depending on how your hardware was wired, you've got the ability to control exactly which order all your ADCs are being serviced by the ADC converter. So that's all we need to do for the ADC side. So now we need to go and start configuring our GP DMA. So the GP DMA is a system peripheral, or you can find it if you've changed the categories as Anders showed. So it's a system peripheral, so it's GP DMA. And we are going to use channel 15. We're going to select this to be linkless mode. So now you can see all the different elements that make up the DMA configuration. So we want to have a look at specifically channel 15's configuration now. We want to set the execution mode to match our ADC. So we need that execution mode to be circular as well, so that it's matching our ADC mode. And now we need to create our linked list. So linked list is hidden down in utilities if you're still in categories, and we open our linked list. And by default, there's nothing in the list, so we need to add a list. And we now need to set some details for our queue. So we need to highlight our queue name. And again, as we did with the DMA part, we need to change our queue so that it is a circular queue. Change that from linear to circular. And so that we know where the first loop is, we need to give the name. So if I go back to my sheet sheet, 14, I could have typed it as your node name. So I'll do the copy code. So there I can paste. So it's your node name. So the first node in the loop is what we've just declared there in the code. So this is where our linked list is going to start from. So this is pointing the queue. So it knows exactly where the first element of our linked list is located. This is also where our last node is going to loop back to. So we said we're in circular mode. So when we hit the last load of our queue, then it jumps back to also back to this first node name as well. This is what we've just detailed there inside the CUBE MX. So the last node exactly knows where to go for the first node. And the software, when it starts up, knows exactly where to go for the first node. So now we've set the queue up and set the starting point and the loop back point to. So we can now go into our particular node. So we actually want to configure what our node is going to do. And in this case, it's going to control our ADC. So our request configuration is going to be linked to our ADC number one. Then we have to set, as in our standard DMA parameters, we need to set a source and destination details. So we will start with our destination details. So we're going to increment our destination address after each transfer because we're going to fill our ram buffer up. And ADC number one, if I remember correctly, is our 14-bit ADC. So we need our data width to be set to half-word. And in our source data setting, we also need to change our data width to be half-word because our 14-bit address of our ADC. Now we need to give our memory locations some names. So our source address is our ADC data register. So I shall copy that. Our source address is our ADC data register. It's here in the runtime configuration right at the bottom. Make sure you delete the zero that's in there. My highlight didn't pick that up. Our destination address is our ram buffer, which is going to be called data. And our size of our ram buffer is going to be 64 times 2. So that's now set the configurations up for the DMA. So we've got a source address, which is our data register, which is set for half-words. We've got our destination address, which is going to increment. So we fill our ram buffer of data, which is also half-words. And we are going to have 64 items loading into our ram buffer of half-words. So that's our data size. It's not in there. So now we need to generate the code. So if you've started from the homework or the cube ID, you've already created a project name. Because I started a brand new project here, I now need to go into the project manager and give my project a name. To call it GPDMA, I think I've already got a zero. So I think I'm going to have to call it GPDMA number one. And as we highlighted earlier, I think it was Crystal's highlight and get for the ecosystem. If you're using the Cubamexa standalone, you've got the option now to select which tool chain you're using. So I'm going to select the cube ID. And that's all I have to do. I don't have to change any other project settings. My project location is correct. It's the default one that I have, which is workspace and workshop. So I've named the project. I've given my project a location. I've set the correct IDE. I can now click on generate code. And I'm getting the warnings that Anders saw earlier on. I'm going to say no to that at the moment so that I don't have these keep popping up during the rest of my hands on. So I'm going to quickly go to chapter zero, my cheat sheets. And I need to set the icash to be one way mode. I shall go back to my pinout all the way up to system and icash. I shall put that into one way mode. The second pop up is to do the power supply. I need to go into the power peripheral and switch my power regulator to be switch mode power supply. Go there into power, power. I now need to switch that one to be switch mode power supply. So I'll just get rid of those annoying pop ups that we've seen there. So now if I generate code, it should go off and generate code without warning me that I've not set two parameters. So it's finished creating all my files. So I'm now going to open project. So this is now opening the cube IDE. And as you saw with Anders this morning, it's wanting me to confirm a workspace. So that's correct. I shall launch my workspace. My cube IDE is now opened.