STM32 Project – Digital Photoframe

This is our first advanced project using a powerful 32bit MCU and all sort of modern technologies like Colour QVGA display, Micro SD Card and Embedded file system. We have made several project using 8 bit PICs and AVRs but those were simple and didn’t use modern displays. In today’s world every one owns several gadgets like cell-phone, tablets, media players, hand held gaming device, digital cameras that uses TFT LCDs and uSD storage. So I thought current DIYers should be dreaming of using them in their own design too. This created the need for a DIY project that should help experimenters use such technologies. So I designed a simple ARM project called the "STM32 Digital Photo Frame".

Project Description

You need to place some BMP format images in the folder "slideshow" in the root of MicroSD card. After that install this MicroSD card in the card slot. Then power up the board using a USB Port. The images will be shown on the QVGA TFT Screen one by one. Their will be an approximate delay of 2 seconds between display of each image. Once all the images have been displayed, the sequence will restart from the first image. The slideshow will continue until the power is removed.

Note: In the current version, the BMP file must be 24 bits per pixel and exactly 320×240 pixels in dimension.

Firmware Description

The main application requires services from the following lower level modules.

The firmware is written in C language and compiled using the ARM Compiler toolchain, previously known as ARM RealView Compilation tools. The IDE and Debugger is Keil uVision 4.20.03.(The whole package is known as MDK-ARM). A 32KB evaluation version can be downloaded from the Keil’s website.

Firmware Package Structure

The firmware package contains the following folders.

  • CMSIS – Common in all ARM Cortex Projects.
  • StdPeriphLib – Peripheral Library for STM32.
  • user – The actual application code including the LCD drivers, FatFs, SD Card SDIO Drivers.
  • uVision – Contains the "PhotoFrame.uvproj" which is the Project File that can be loaded in uVision. This folder also contains a sub folder "output" which contains the intermediate files and the final application file called "PhotoFrame.axf"

Hardware Description.

The hardware requires fine professional manufacturing process thus cannot be easily fabricated at home. But their are several low cost STM32 development boards which can be used to implement the project. One of them is the MINI STM32 board which has the STM32F103VE MCU with a 2.4 inch QVGA display. The board has a standard 20 PIN ARM JTAG for debugging and programming. Those who are interested in purchasing MINI STM32 can contact me.

STM32 Project - Digital Photoframe

STM32 Based Digital Photoframe Example using MINI STM32



Before purchase please agree with the following points.

  • You own a MINI STM32 board with 2.4 inch TFT LCD.
  • You own a JTAG debugger like a ULINK or JLINK.
  • You own a 2GB micro SD card.
  • You have read the above description thoroughly.
  • Maximum liability is refund of amount that was paid for purchase.
  • Any dispute must be reported within 7 days of purchase. In case of any dispute only US$4.99 will be refunded.
  • All payment processed securely using Paypal.

JLCPCB Prototype: $2 for 10 pcs PCBs, 48 Hours Quick Turn

China’s Largest PCB Prototype Enterprise, 300,000+ Customers & 10,000+ Online Orders Per Day

Get quote online easily: quote

Facing problem with your embedded, electronics or robotics project? We are here to help!
Post a help request.


Avinash Gupta is solely focused on free and high quality tutorial to make learning embedded system fun !

More Posts - Website

Follow Me:
FacebookLinkedInGoogle Plus

Hobby Robotics Wheels

36 thoughts on “STM32 Project – Digital Photoframe

  • By nat - Reply

    How do I buy the photoframe code?

  • By Munish Kaundal - Reply

    Helo Sir,
    I am working on Arm Cortex projects and I want to make projects on digital Photometer. i will be very thankful to you if you will provide me code for Digital photoframe.

    Munish Kaundal

    • By Avinash - Reply

      @Munish Kaundal

      It is NOT free you have to pay $5

    • By ramesh - Reply

      nothing is free….first pay avinash

  • By Anik - Reply

    can u suggest good tutorials for ARM assembly coding in keil

    • By Avinash - Reply


      Are you joking ?

      • By ramesh -

        he must be joking..:)

    • By ramesh - Reply

      search it on google……

  • By Ishika - Reply

    What is the best way to convince my step mom to bye me a new cell phone. I really want one but not as much as I need one. If I had a doller for every time I was stranded some were and needed to call some one, I would be rich enough to bath in my money. My birthday is comming up along with chritmas and its the first thing on both lists. Some one please help me.

    • By ramesh - Reply

      take udhar from friends…

  • By Saurabh Nanda - Reply

    Hi, what hardware would you pick if you had to display JPEG/GIF/PNG images instead of BMP?

    • By Avinash - Reply

      You have to write the decoders for them. JPEG/GIF/PNG uses complex compression techniques. Otherwise you need to port one of the official libraries. Though most of them are written for powerful environments that has mega bytes of RAM and lots of CPU power (Tablets, Phones and PCs). M3 core is a micro-controller profile thus has limited resources.

  • By Saurabh Nanda - Reply

    @Avinash: True. What board would you recommend if the task were to decompress JPEG/GIF/PNG images?

  • By Gedela Rambabu - Reply


    i want to start new project on arm controllers,plz tell me cost of MINI STM32 board and ULINK or JLINK.


  • By Alessandro Manigrassi - Reply

    I want buy your firmaware, can you please send me detail than I can pay it?

    With best regards


    • By Avinash - Reply

      @ Mr. Alessandro,

      You can download the code (password protected) from the link in the article. Then pay using Paypal.

      Please enter your email and click “Buy Now” button.


    • By Avinash - Reply

      Thanks for the payment.

      Please check your email for password.

  • By Riko - Reply

    Hello there,

    Do you have experience with GUI with STM32 like this one :

  • By Brahmadutt - Reply

    I am working on LPC2148. I am making my project based on GLCD, SD card. Read the input value from ADC, store it in SD card and display on GLCD. Can u help me in coding.
    Thanks in advance.

  • By Nibs - Reply

    Is this possible to load STm32 board with android or linux operating system …. if not according to you whats the best option available in market
    hoping for a reply
    Thanks in advnace

  • By ramesh - Reply

    sir how can i set avr envoirment in linux

  • By mohammad abdali - Reply

    tank in advnace

  • By shubham - Reply

    i wanna purchase the password would u give m your account no
    i will deposite money in your account
    also tell me the amount in rupees

  • By NELSON - Reply

    I paid for the code but never received the Password to open the ZIP file.
    How can I get the password?
    I am very interested in running the code !
    Thank you.
    Nelson —

    • By Avinash - Reply


      When did you paid? Provide the date.

      • By NELSON -

        Dear Avinash:
        Here is the info –

        Transaction Details

        Web Accept Payment Sent (Unique Transaction ID #55359964FS366572S)

        Original Transaction
        Date Type Status Details Amount
        Feb 21, 2013 Payment To Avinash Gupta Completed … -$4.99 USD

  • By NELSON - Reply

    Also, I sent e-mail with a question.
    Here is the copy-
    Dear Avinash:

    My name is Nelson.
    Just downloaded the source code for the Digital Frame with the STM32-Board.

    Need password and also I have another question for you.

    I need an application to display using this STM32 board a Power Meter Widget (very similar to the automotive demo).

    The inofrmation will arrive at the Serial Port and will consist only in int with values ranging 0 to 1000.

    Let me know if you are interested in the development of such application and I will be glad to pay for it.

    Look forward to hear form you very soon.

    All the best.

  • By Naval - Reply

    I Have Mini STM32 Dev. Board Plz refer to

    Is This Photo_Frame Software is compatible with the same Hardware or I have to make some considerable changes.

  • By weizhang - Reply

    i am in china, how can i pay for you

  • By Rodrigo - Reply

    Hi Avinash, i have stm32f407vgt6 Discovery and HY32d, development board Open407V-D, Is This Photo_Frame Software is compatible with this Hardware ?

  • By Tuan3i - Reply

    I want to buy your source code to develop my project, however my board connect to SDCard through SDIO Pins. So I want to know: your board connect to SDCard through SDIO or SPI. Thanks

  • By basavaraj - Reply

    sir can i use this board MINI STM32 Dev Board STM32F103VET6 512K FLASH 64K SRAM+2.4 inch LCD Display Screen
    instead of MINI STM32 board with 2.4 inch TFT LCD.

  • By Alejandro - Reply

    Hello Avinash
    please tell me the price and specs of your MINI STM32 product.
    Thanks in advance


    • By Avinash - Reply


      So we do NOT sell that board. Please check eBay.

Leave a Reply

Your email address will not be published. Required fields are marked *

seven × 7 =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>