 So, we all managed to open this PDF document set that we're looking at here. Because you're now going to do copy and paste to make it easier for removing missed semicolons, missed brackets and things like that. This section, all you're doing is copy and pasting these lines of code between a beginning and an end. So, the first element we have to do is create the array that we're going to write all our data values in. So, this goes in section PV, which is up near the top of your code about line 47. And you just need to take, you can take the comment line if you want, all you need really is the array, name and casting. If you edit between a beginning and an end and you regenerating cube, these are like compiler directives to the cube tool. So, it means what's between there is maintained if you regenerate. If you type outside of there, it gets overwritten by a standard template again. So, this is why everything that you'll be pasting will sit between a begin and an end. Because as the project builds up, we'll go back to cube, add another feature, come back in again. So, this is why you need to make sure you're typing between these begins and ends. It is a way of us directing you how to write software, but it's the only way that we could structure it so that you can reuse cube multiple times in a project. So, we had to do something to try and enable that feature. So, section two, you start your ADC and you start your timer. The other thing we need to create is a flag. So, we know when we've done a conversion complete. So, we add a variable into the PV section. Below the previous one, you've generated with the array. So, that you can have a flag so that we can set and clear as we do the conversion complete. The way the HAL library works, the initialization routine has been brought in when you configured it inside the HAL, inside the cube tool. We've started the command. So, therefore, we'll have to get an okay, an error, or a busy. But we've also got the interrupts coming in. So, when we get a conversion complete, that will trigger an interrupt. So, therefore, we need a process inside the main.c, which is the callback routine for the interrupts when we get conversion complete. So, down in section four, user begin four. We will add a complete routine for the callback, which will then enable our flag to say we've got a conversion complete. So, that goes down in section number four. So, that's down at line number 271, I think this is. Something like that, quite a way down the code. We also need to include the USB libraries into our main.c. So, in the include section, we need to do the include for the CDC interface class. So, this sits in between the beginning and end for includes. And that will bring in just the CDC part of the USB library. So, all the functions regarding sending and receiving on the virtual comport now have been linked into our project. So, the callback routine goes in begin four, which should be around 270-ish. It's only a guess. Then in user code begin number three, this is the bulk of your transmit routine. So, this is your main loop now. So, every time it's checking for the conversion flag, it's checking to see if the USB interface is busy. If it's not busy, then it will do the transmit of the class. You do not need to copy the bottom bracket. It's already in your code to start with. So, do not copy the bottom bracket on that one. So, you'll only need to, I think, copy all that code and two brackets and paste into your application. So, that's all the information you need in your main.c. You do have to add some information, though, to this USB file, which I think appears directly below main.c. I should say I-F, by the way, they're not I-T. I think it's the file below main.c, if I remember correctly. So, USB-D underscore CDC underscore I-F. And the sections we need to add to this file are purely to manage the handshaking between the Microsoft operating system and the board. All this is there for, because Microsoft, when it connects a virtual comport, sends some information out, and it expects to receive that information straight back. Otherwise, it parks you again as an unknown device. So, we need to create a buffer. In section two, only take the black text, please. If you take all the green text, you'll end up with two lines that aren't classed as comments in your code. And we'll flag some errors when you try and compile. So, do not take all the comment lines on that section, please. PowerPoint's added two carriage returns in there, which are picked up straight in the compiler. And then down at line 195 in this file, your case statement already exists. You need to just copy these buffer elements into these two line codings, which is line 195. And I think that one's line 207. So, you just need the middle part, so you just need the buffer bits. The case statement already exists in your code. So, that's all the code modifications we need for this part. Before you build the code, can you go and check the heap size that IAR has allocated in the options? You need to make sure you've got a heap size of 800. I think by default, you're at 200, I think, is what's generated. You need to make sure the heap size is at 800. Otherwise, again, Microsoft will go and park you, because it can't send enough variables over. And then the stack and heap is the third tab inside the edit. Stack and heap is the third tab. And you need to make sure your heap is 800. I'm just using a different example here, so I can bring you up on the screen. So your heap needs to be 800. The stack is OK, but your heap needs to be 800. You want a micro, mini one, do you? Micro. Micro one, yeah. I hope we have. Just about. So once you've done all that, you should be able to hit F7 and build, download into your board, and then, hopefully, Microsoft Windows should not park it. You might get unknown device, but it should not park it. And when you connect to Windows, you should gain a second virtual comport in Windows Device Manager, if it's worked correctly. So you'll have one virtual comport, which is the ST link. You should gain a second virtual comport, which is your micro USB connector, if everything has worked correct.