experiments in writing hardware drivers for stm32 microcontrollers
Find a file
2026-04-13 02:34:55 -04:00
.idea added w25q reset and read_id 2026-04-05 03:54:27 -04:00
build added primitive graphics 2026-04-13 02:29:43 -04:00
cmake added w25q reset and read_id 2026-04-05 03:54:27 -04:00
Core added primitive graphics 2026-04-13 02:29:43 -04:00
Drivers added w25q reset and read_id 2026-04-05 03:54:27 -04:00
.DS_Store added primitive graphics 2026-04-13 02:29:43 -04:00
.gitattributes ok 2026-04-04 04:51:38 -04:00
.gitignore added primitive graphics 2026-04-13 02:29:43 -04:00
.mxproject added w25q reset and read_id 2026-04-05 03:54:27 -04:00
cmake_install.cmake gitattributes and docs 2026-04-04 04:47:25 -04:00
CMakeLists.txt added primitive graphics 2026-04-13 02:29:43 -04:00
CMakePresets.json init 2026-04-04 04:11:06 -04:00
compile_commands.json gitattributes and docs 2026-04-04 04:47:25 -04:00
Makefile gitattributes and docs 2026-04-04 04:47:25 -04:00
README.md better readme 2026-04-13 02:34:55 -04:00
startup_stm32h750xx.s init 2026-04-04 04:11:06 -04:00
STM32H750XX_FLASH.ld init 2026-04-04 04:11:06 -04:00
third.ioc added primitive graphics 2026-04-13 02:29:43 -04:00

interface

this repository will contain all code involved in hardware drivers i write to be used with my STM32H750VBT6 development board

this also includes useful code that works well with the drivers, such as a graphics library (graphics.h)

it is also mostly written in c++. i was enjoying using c but i wanted the flexibility of c++ classes, as you don't need to have cubemx hardcode your pin names

in order to do this, the main.c file that cubemx modifies just has a call to boot() in its main function, which lies within boot.cpp. this has the added side effect of making the actual code much cleaner, without a whole mess of comments making it super unreadable

the project uses cmake as jetbrains clion seems to like it the most (i am using a mac, i cannot get visual studio, and i hate stm32cubeide)

implemented drivers

  • max7219.h
  • w25q.h
  • ili9341

implemented features

  • graphics.h
    • canvas_8 1-bit 8x8 canvas class (for use with max7219.h)
      • draw_point()
      • draw_line()
      • draw_shape()