Here I document my NanoCH32V203 Development Board personal projects.
The NanoCH32V203 is a cheap RISC-V development board. You can get one in AliExpress with LCD Screen and USB cables for less than 10 dollars, which is a pretty good price IMO. The NanoCH32V203 is based around the CH32V203C8T6 microcontroller from QinHeng. It has 20KB of RAM, 64KB of programmable flash memory, and supports, among other things, the USB interface, which we will use in many projects interfacing it with USB keyboards and mice.
You can find the IDE, programming tools, instructions and examples in their GitHub repository.
Blinking LED
My first project was the usual LED blinking test. The NanoCH32V203 incorporates a LED. Just a matter of setting up the pins to output and activating them every second. Pretty strightforward. You can download the example MounRiver Studio IDE project fie HERE or in my GitHub repository.
LCD Screen Demo
My second project was a demostration of LCD usage. The program outputs a text (8x8 free font) to the screen and makes it bounce around it. You can download the example MounRiver Studio IDE project fie HERE or in my GitHub repository.
Mouse Demo
My third project was a Pong-like game using the USB conection to a standard USB mouse. Note that not all computer mice use the same protocol, so yours might not work like mine. You can download the example MounRiver Studio IDE project fie HERE or in my GitHub repository.
Keyboard Demo
The fourth project I made was a USB keyboard recognition program. It recognizes all letters and numbers. I thought it was enough for a demo, but it can be easily extended. You can download the example MounRiver Studio IDE project fie HERE or in my GitHub repository.
Pong in C and ASM
The fifth project I made was a ball bouncing around the screen, but this time I programmed it mixing C code and RISC-V assembly language. As with the other projects you can download it HERE or in my GitHub repository.
Spinning 3D Cube + Timer
The sixth project I made was a spinning 3D cube while the led blinks every second. This time the led blinking was made using a timer (Timer 3). I had troubles using math.h functions in MounRiver Studio, so I had to use custom sin/cos functions. It was a bit of a mess. As with the other projects, you can download the MounRiver Project file and source code HERE or in my GitHub repository.