How ch-2020-hc/stm32f446re-baremetal works
This is a bare-metal STM32F446RE firmware project. Its implemented workflow initializes memory after reset, configures clocks and GPIO/EXTI, then responds to the user button through an interrupt to toggle the onboard LED. The README also describes future PWM, DMA, SPI, and CAN labs, but those applications are absent from the tree. Connections reflect the sampled app and EXTI code plus documented startup behavior; several driver implementations and startup assembly were not sampled.
Main entry points: main.c Blink EXTI App · exti.c EXTI Driver · gpio.c GPIO Driver · startup.s Reset Startup
Components 13
Boot and Memory
- Reset Startup
startup/startup.s - Flash and RAM Layout
ld/stm32f446re.ld
Stage 0 Firmware
- Blink EXTI App
apps/00_blink_exti/main.c - EXTI Handler
apps/00_blink_exti/main.c
Peripheral Drivers
- Clock Setup
drivers/src/rcc.c - GPIO Driver
drivers/src/gpio.c - EXTI Driver
drivers/src/exti.c - SYSCFG Registers
drivers/include/syscfg.h - EXTI Registers
drivers/include/exti.h
Platform Support
- Device Definitions
cmsis/stm32f446re.h - CMSIS Core Support
cmsis
Other components
- User Button
- LD2 LED
Connections 13
- Reset Startup → Flash and RAM Layout: uses layout
README.md - Reset Startup → Blink EXTI App: calls main
README.md - Blink EXTI App → Clock Setup: initializes clocks
apps/00_blink_exti/main.c - Blink EXTI App → GPIO Driver: initializes pins
apps/00_blink_exti/main.c - Blink EXTI App → EXTI Driver: initializes interrupt
apps/00_blink_exti/main.c - EXTI Driver → SYSCFG Registers: maps pin
drivers/src/exti.c - EXTI Driver → EXTI Registers: configures registers
drivers/src/exti.c - EXTI Driver → Device Definitions: enables IRQ
drivers/src/exti.c - Device Definitions → CMSIS Core Support: includes core
cmsis/stm32f446re.h - User Button → EXTI Driver: triggers interrupt
README.md - EXTI Handler → Blink EXTI App: sets flag
apps/00_blink_exti/main.c - Blink EXTI App → GPIO Driver: toggles output
apps/00_blink_exti/main.c - GPIO Driver → LD2 LED: drives
README.md