Once COMP2300’s done and dusted it doesn’t mean that you need to stop building things—here are a few ideas for fun projects to take on over the winter break. Because what else are you going to do with your discoboard?

If you end up getting any of this stuff working (or even partially working) then I’d love to see it (send me an email). We could even incorporate it into the labs for next year. Wouldn’t it be fun to know that you actually contributed to the course material for a real live ANU course?

Build an LCD library

We ran out of time before we got to programming the LCD display in COMP2300, but if you want to build your skills then have a look at the reference manual and try and build a “library” for displaying stuff on the LCD display.

There’s a rumour that some folks have already got this working. But there’s also a rumour that the Loch Ness monster exists, so git repo or it didn’t happen.

Remove all the C code from init and BSP_AUDIO_OUT_* in the assignment template

It’s kindof a drag the first time you run any of the assignment templates and hit pause in the debugger; you get dumped into some weird looking C code you’ve never seen before.

It’d be really cool to have a pure asm version of all the audio setup & playback code (maybe with nice comments) so that everyone could step through it and learn how it works.

There are a couple of ways to do this:

  1. read the reference manual carefully and write the assembly code from scratch to twiddle all the necessary bits to set everything up

  2. start with the current C-based template, then look at the assembly code generated by the C compiler as a starting point, adding comments and cleaning it up to make it readable/understandable as required

Get an emulator working smoothly with PlatformIO

It’s awesome to have a real discoboard to work on, but sometimes you don’t have it handy and you just want to try some simple code ideas which would work on any ARM Cortex device.

One cool project would be to try and get a simple emulator (e.g. Unicorn) working as a board for PlatformIO. That way, you could just edit the board config value in platformio.ini to switch between the emulator and the real board. Obviously you wouldn’t have any of the peripherals (e.g. audio output, LEDs) but it’d be nice for just levelling up your ARM assembly coding skills.

Added bonus: we could use it in the labs next year for easy/quick testing and validation of coding ideas.

Experiment with other (similar) boards

This isn’t a discoboard project per. se., but there are lots of other microcontroller boards out there to explore (and new ones being released all the time).

One cool option, still within the STM32 ecosystem, is the black pill, a much smaller and cheaper ($2ish) board, although with fewer bells and whistles. If you wanted to buy a bunch of them and get them working then there are bunch of fun projects you could try. Perhaps you could actually build TweetyPotato?

Updated:    08 Jul 2020 / Responsible Officer:    Head of School / Page Contact:    Charles Martin