Goal
Implement a real-time embedded application on an STM32 NUCLEO-F401RE microcontroller running three timekeeping functions simultaneously — world clock (multiple time zones), timer, and stopwatch — using a finite-state-machine architecture within the compute and memory budget of the embedded target.
Skills
- STM32 Development
- Finite state machine design
- Real-time embedded systems
- Hardware peripheral integration (LCD, joystick, GPIO)
What I did
- A finite state machine in C++ coordinating the three timekeeping functions on a single tick loop, with each mode preserving its state correctly through user-driven transitions.
- Responsive input handling from the application shield’s joystick, buttons and potentiometers — debounced and integrated into the FSM transition logic.
- LCD output rendering and refresh logic balancing readability against the cost of frequent screen updates on the embedded hardware.
- Developed in C++ using Keil Studio Cloud for browser-based compilation, with timing and behaviour validation carried out on the physical NUCLEO-F401RE board.

