 So we now need to build our project, so f7 again. Now we download and download active application back into our board. And now when we press our reset button, we should now get music, but we will now have to press the play and pause buttons so that we can actually hear the music. So to do that, we have configured the buttons to be play on the right-hand side, pause is the centre and left is stop. So when you pause it, the green LED stops flashing and then you can play again, or if you hit the left button then it stops it and next time you play it will come straight from the beginning again of the music. So why did we use a cue this time rather than a task? It's because we only want to just process one event at a time. So we want to see one interrupt come through from the external interrupt service routine. Why didn't we use a signal? Multiple signals can be set at any time, so we only want to do a cue rather than a signal. So finally the last item to add is the LCD display, so the segment LCD display, so we can see what mode we're in, play, pause or stop. So this is going to be driven directly out to the glass LCD on the discovery board. So here's our hardware configuration for the segment LCD, so there are a lot of pins here to configure to drive all the different segments of our display. So if we go back to our pin out diagram in cube, we need to add the LCD display at one quarter duty cycle. So as we are only using four commons, which will appear as PA 8, 9, 10 and PB 9. And then we need to add each of the individual segments as shown in this table on the screen now. So we need to tick each of those segment numbers free all the way up to number 35 there to assign each of these GPIO pins. So each pin will get automatically assigned. When it's complete, it should look like that, mostly in the right hand side of the device, but there are some on the bottom left and on the top. So if we go to our pin out diagram in the cube environment, so if we go back to pin out tab, and now we want to add the segment LCD display. So we'll expand the display there. You'll notice there's a yellow caution sign on the peripheral there for the LCD. That means not every segment is available to us. So you will see here that we can't do one eight duty cycle because some of the commons that are needed for that are no longer available. So we are only using one quarter duty cycle. And there you can see that certain pins are not available to us because they're already in use on the discovery board. So this is why we have that list of segment numbers that we need to go through. So it's segments 3, 4, 5 and 6. 8 and 9, 12, 13, 14, 15. Number 17, 22, 23, 24, 25 and 26. 28, 29, 30, 31, 32, 33, 34 and 35. So that should be 24 segments in total. That's correct. And they are now all declared correctly on the diagram. So our diagram now is matching what we have at that point there. Because we've now added the LCD, we've now got to set the clock configuration for the LCD display. The LCD segment display is connected to the low speed external crystal. So if we go into the clock configuration, we need to connect the LSE to our LCD segment display. So if we go into our clock configuration, we now need to use the LSE as our clock source for the display. So we changed the multiplexer for the RTCLTC so that the LSE is routed to the LCD segment display. Now we need to go and configure the LCD segment display. So we go on to the configuration tab and open the LCD properties box. And we need to set certain features to match our particular type of segment display we have in this device or on the discovery board. I go into the configuration tab. Click on the LCD segment disk driver. So our clock divider is 31. Our bias sector is one third. Our contrast control voltage is 3.32 volts. And our pulse on duration is 5 clock PS. And that's our LCD device configured. Now we need to go and add this task to our RTOS again. So we need to generate a new task in our RTOS. This will be called the display task. It has a priority of normal, a stack size of 1 to 8, and its entry function is display task body. So we go into our free RTOS. We add a new task. So it's display task. Priority is normal. Stack size is 1 to 8. And our entry point is display task body. Remember your capital T and your capital B in task body. So that's our fourth task now in our RTOS system. So we can OK that. And our list now looks like that. So we now have four tasks in there. So that's complete now. We can now go and generate our code. Again, do not open the project because we need to apply the patch. So this is the last patch to apply. So step six display patch. There is one include file which tells the system about our segment LCD we're using, and then there should be free source files that need to be copied across. The routines that we've added to the LCD.C are to do with the displaying of the various strings and clearing of the display. So these are the extra routines that get added that we're pasting in to save you the time of writing the application. So I will go project generate my code. Again, say yes to the system tick warning message that is still appearing. So we want to close our project this time. We need to do the patch again. So we go down to our patches. So step six patch. So we have one ink file to copy across. And we have four source files now. So the SAI.C file is in there again. So we need to copy all those across and replace all those files. Now we can go and open our environment using the project EWW in the EWARM folder.