Kitchen Timer Demo

Firmware for an STM32F4 that drives a rotary encoder, ST7789 TFT display, and PWM buzzer to run a kitchen-style countdown timer. All drivers, UI, and state machine logic are written in C without a vendor HAL.

On boot the display shows 00:00. Turn the encoder to set the countdown in five-second or one-minute steps; a short press toggles which unit is being adjusted. Long-press starts the countdown. While running, short press pauses and resumes; long-press cancels. When time expires, the buzzer sounds a repeating alert followed by an acknowledgment tone. A progress bar tracks remaining time during countdown and set value while idle.

Register-level drivers cover GPIO, SPI, SysTick, EXTI, and TIM2 PWM. The rotary encoder uses EXTI edge detection with quadrature decoding in the ISR and debounced switch events. The ST7789 driver renders a 5x7 font with partial progress-bar updates. Bare-metal startup includes a custom linker script, vector table, and .data/.bss initialization.