Home > ARM > STM32 Mini Computer

STM32 Mini Computer

Hi again.
Today I’m going to talk about my mini computer I started making with the STM32.
It’s powered by the STM32F103RET6 stamp board from Futurlec, and it is clocked at 72MHz. Right now there isn’t any “real” applications or games in it, but theese are under development.

You can see some pictures about it here, but I’ve also made a video where you can see it in use.

Mini Computer - The Menu

The buttons on the right side of the menu is from Microchip’s Graphics Library, which I ported to the STM32.


Edit, 29. September 2010:
I’ve now uploaded this source with some extra things like viewing images or playing MIDI or MP3 files (requires VS1053 chip) from SD card.
You can download the project here

Categories: ARM Tags: , , ,
  1. Mariem
    April 22nd, 2010 at 10:58 | #1

    Hi Tomas,
    I’m runnig the demonstration software for the STM3210E-Eval. I displayed the main menu & the icons and now I need to change these icons with some other icons according to my application to load them after that to the Internal Flash.
    Can you please help me with this ??
    Best Regards

  2. June 3rd, 2010 at 20:13 | #2

    Excellent window system. Good project. Just try to LCD Wf57e.
    I quickly start a pay-for STM32F107 and LCD WF57E. Today it happened. From the library refused. It is very slow. Thanks for the video.

  3. June 5th, 2010 at 16:12 | #3

    Hello, I’m from Brazil. Engineering Study. I bought an LCD identical to this one. I’d like to learn to control it. not found much material. In my case I intend to control using PIC 18F4550, think possible?
    I thought of using SPI. and store images on SD card.
    What are the limitations?
    Could you give me some tips or materials to help me succeed?
    Never fuse with graphic LCD …


    • June 6th, 2010 at 21:28 | #4

      Yes it is possible and with good results!
      Take a look at Microchips Graphics Library – you need to have MPASM and C18, but you can get those as free student editions!
      Those will get you started, but I can also help you…

      Best Regards
      Thomas Jespersen

  4. June 8th, 2010 at 15:41 | #5

    Hello. I still have some questions and doubts about the control of this LCD. Well, i am using, as i said before, the microcontroler PIC18F4550 @ 5V, but i need 3.3V for the power supply of the LCD, so the question is, what regulator do you recomend me to use in order to get the 3.3V necessary? If you used one, which one did you use, or do you have any other sugestion or tip to give me?

    Best Regards
    Lucas Romeiro

    • June 10th, 2010 at 13:15 | #6

      In this project I’m using an LD33V voltage regulator, but if you are going to control the display with a 5V controller, you have to make some voltage translations on the digital lines (such as Clock, Latch, data…)
      This can be achieved with a couple of resistors though – http://en.wikipedia.org/wiki/Voltage_divider

  5. June 11th, 2010 at 16:56 | #8

    Hello, you used some program to make the menus? need all possible information, I program in C.
    know this program: http://www.ramtex.dk/gclcd/glcd0129.htm

    It seems to be interesting and very useful. most do not know very well …

    communication of your lcd is spi?


  6. July 29th, 2010 at 08:48 | #9

    Sorry for the late response, your comment was lost in my Spam filter 🙂
    Unfortunately I haven’t tried the STM3210E-EVAL board, but I’ve took a look at the code, and it looks pretty straight forward.
    But I don’t know exactly what you are trying to do and needs help with – could you please explain?


  7. Marty McLeod (micro_engineer)
    September 19th, 2010 at 22:58 | #10

    Hi Thomas.

    Are you sharing the code, etc?

    I’ve found a similar board/LCD display (not the same models) and thought about trying out a demo using an STM32.

    Thanks. 🙂

  8. September 21st, 2010 at 17:33 | #11

    @Marty McLeod (micro_engineer)
    I’ve now uploaded this project with some extra things like viewing images or playing MIDI or MP3 files from SD card.
    You can download the project here

  9. September 21st, 2010 at 17:45 | #12

    @Lucas Romeiro
    Hi Lucas.
    No I didn’t use any program to make the menus. They are made from scratch, by using some of the functions from Microchip’s Graphics Library, ported to the STM32.
    You can download the project now – so have a look 🙂

    The current display setup is communicating using a standard 8080-interface, which includes a 16-bit data bus, CS, RS, WR (Clk for Write), RD (Clk for Read)

  10. Lo
    October 3rd, 2010 at 17:30 | #13

    Great job!
    I just wondered what did u use to make the code? did u use an ide like eclipse, coda or so?
    i’m switching from arduino/java to the world of uC.

  11. October 16th, 2010 at 17:31 | #14

    Hi Lo.
    Yes, I use the Raisonance RIDE IDE. This IDE makes it alot easier to get started, as you don’t have to mess with makefiles and such.
    The IDE also includes the GCC ARM compiler, so you can just press Compile, and then you have a HEX file, ready for programming.


  12. lo
    October 21st, 2010 at 14:39 | #15

    @Thomas Jespersen
    Hi Thomas, thank’s since i did check your project, it is great to port the microchip library to stm32, i have read somewhere in the blog that you first tried to code for the ili9320..Do you still have these port?
    My stm32 board is the exact same than your exept it has a ili9320, and i d’like better use the ported microchip library than micrium os/gui, wich is a commercial thing.
    I was near buying a microchip or even 4dgl lcd (seems great too) but your microchip library to stm32+coocox could be an good/better solution. Please let me know

  13. October 28th, 2010 at 09:54 | #16

    Hi Lo.
    I have worked with the ILI9320 on the Arduino, but not on the STM32 yet.
    I have recieved a ILI9320 or ILI9320 display (can’t remember), which I’m going to connect to the STM32 in the nearest future.
    When I’m going to play with that, I will of course write a library for it, and then also implement the Microchip graphics library.

    Best Regards
    Thomas Jespersen

  14. June 14th, 2012 at 18:38 | #17

    Hi! Excelent project. I try to make HY32D Display and STM32F103. Please help port to this on Keil. Thank a lot of!

  15. June 15th, 2012 at 16:16 | #18

    Hi Eugene.
    It looks like the HY32D display uses the SSD1289 so you would have to write or find a driver for this specific controller.

    This might actually be a good start: http://code.google.com/p/stm32radio/source/browse/trunk/stm32radio_examples/examples/4_gui_examples/ssd1289.c?spec=svn74&r=74
    From that code you can have some good indication of which registers you have to write to, to set up the display properly!

    Or why not take a closer look at the Sample Code for the Mini STM32 module by Micro4You: http://www.micro4you.com/files/STM32/Mini_STM32_V4_2012.2.28.rar
    It comes with a 3.2″ display also using the SSD1289 and the code is made for Keil, just as you requested 🙂

    Best Regards
    Thomas Jespersen

  16. Qasim
    July 10th, 2012 at 05:42 | #19

    great work, can you tell me which compiler did you used, can i use coocox for this project?
    thank you

  17. July 24th, 2012 at 19:08 | #20

    For this project I used Raisonance Ride7 compiler as it was free of charge at that moment without any limitations. Unfortunately things have changed so it is not unlimited anymore.
    But you would for sure be able to port this project to CooCox relatively easy. As long as you make sure to use the CooCox provided project and core processor files (system_stm32f10x.h etc.) you should be good to go.

    Regards Thomas

  18. rosaldo
    July 31st, 2012 at 18:15 | #21

    You mentioned in your code that You have a problem writing to the flash.
    I’m wondering why the flash address You’ve chosen 0x7F808
    AS I’ve learned flash adress area starts from 0x80000000
    Whould it be better to name table like const TblCfg[1024], locate it at beginning of flash area
    and write to it?

  19. August 1st, 2012 at 20:07 | #22

    Dear Bob.
    You are indeed right. This project was made a very long time ago where my experience with the STM32 toolset were more or less limited.
    So especially when going to write and save parameters directly to the flash I had no clue.

    Though now I have learned and discovered much better methods including compiler specific definitions for assigning a special area in the flash for use with parameters etc.
    Just like you mention with a constant table that, thru the linker script, is then assigned to a specific address.

    Regards Thomas

  20. Tom
    November 22nd, 2012 at 14:45 | #23

    Owww Great work! please I have a project to study” the creation of a stopwatch on stm 32L”! and I am null .. if you have this project or source code please help me. thank you :))))

  21. November 25th, 2012 at 13:58 | #24

    Hi Tom.
    I don’t have the source code for it, nor have we tried working with the L1 series.
    When it comes to compiler choices you could have a go with the free but limited Atollic TrueStudio or you could start a bit more advanced and set up an Eclipse base free and unlimited GCC environment.

    Best Regards
    Thomas Jespersen

  22. Colin Forster
    December 6th, 2012 at 16:25 | #25

    How easy would this port to the STM32F4 discovery board?
    How would this compair with the PIC32?



  23. Fernando
    January 30th, 2013 at 20:23 | #26

    Hi Thomas, i want to know how you make the clock runs at the same time with the program? Because i can’t do it, with a make the clock stay running i can’t go out the while or for without stop it.Can you help me?

  24. February 11th, 2013 at 05:24 | #27

    @Colin Forster
    It would be fairly easy due to the same structure of the code, between Cortex M3 and Cortex M4.
    You would only have to replace the Standard Periphiral library and make sure that my code works with this new library.

  25. February 11th, 2013 at 05:48 | #28

    Hi Fernando.
    In this project I’m using the RTC of the STM32 to set the time and keep it running even when the power is gone, sue to a backup battery.
    I am just setting the RTC and then the system takes care of the rest – and I can simply read the time.

  1. No trackbacks yet.