Articles
The technical knowledge base behind every series and project, searchable, filterable, and organized around engineering concepts rather than dev-board marketing.
⌕
30 articles
Showing 30 of 30 articles
Porting FreeRTOS to STM32 From Scratch
Adding FreeRTOS Source Files to the Build
Add the FreeRTOS kernel, Cortex-M portable layer, heap implementation, and include paths to an STM32 CMake project without hiding what each file contributes.
Porting FreeRTOS to STM32 From Scratch
Configuring FreeRTOSConfig.h for STM32
Configure the FreeRTOSConfig.h settings needed for first STM32 scheduler bring-up, including tick rate, CPU clock assumptions, priorities, assertions, allocation, and minimal kernel features.
Porting FreeRTOS to STM32 From Scratch
Creating the First FreeRTOS Tasks on STM32
Create minimal FreeRTOS tasks on STM32, start the scheduler, and verify that task switching is working without adding unnecessary application complexity.
Porting FreeRTOS to STM32 From Scratch
Debugging the FreeRTOS Scheduler Bring-Up
Debug common FreeRTOS scheduler bring-up failures on STM32, including failed task creation, default handler traps, missing ticks, stack problems, priority mistakes, and assertions.
Porting FreeRTOS to STM32 From Scratch
Moving Peripheral Work into FreeRTOS Tasks
Move STM32 peripheral work into FreeRTOS tasks without turning every driver into an RTOS dependency or hiding timing and interrupt boundaries.
Porting FreeRTOS to STM32 From Scratch
Preparing an STM32 CMake Project for FreeRTOS
Prepare an existing STM32 CMake project for FreeRTOS by choosing source layout, configuration locations, include boundaries, and build ownership before adding kernel files.
Porting FreeRTOS to STM32 From Scratch
Setting Up the SysTick Timer for the RTOS Tick
Connect the FreeRTOS scheduler tick to the Cortex-M SysTick timer on STM32 and understand how tick rate, CPU clock, interrupt priority, and delay timing fit together.
Porting FreeRTOS to STM32 From Scratch
Understanding the FreeRTOS Portable Layer
Understand what the FreeRTOS portable layer does on STM32, including stack setup, scheduler startup, critical sections, and Cortex-M exception-based context switching.
Porting FreeRTOS to STM32 From Scratch
Using Queues and Delays Without Breaking Timing
Use FreeRTOS queues and delays on STM32 while keeping timing, blocking behavior, queue capacity, and ISR boundaries explicit.
Porting FreeRTOS to STM32 From Scratch
When to Use Bare Metal, HAL, or FreeRTOS on STM32
Choose between a simple bare-metal loop, STM32 HAL callbacks, project-specific drivers, and FreeRTOS tasks based on timing, complexity, concurrency, debugging cost, and firmware structure.
Porting FreeRTOS to STM32 From Scratch
Why Port FreeRTOS Yourself?
Understand why manually porting FreeRTOS to STM32 is useful when you want to learn the scheduler, interrupt, stack, and build-system boundaries instead of treating the RTOS as generated project code.
Porting FreeRTOS to STM32 From Scratch
Wiring PendSV and SVC for Context Switching
Wire the Cortex-M PendSV and SVC exception handlers used by the FreeRTOS port so the scheduler can start the first task and switch task contexts on STM32.
STM32 Development with CMake and VSCode
Adding Startup Code to a Bare-Metal STM32 Project
Add the vector table, reset handler, data initialization, BSS clearing, and main entry path needed by a bare-metal STM32 firmware image.
STM32 Development with CMake and VSCode
Adding STM32CubeMX-Generated Drivers to a CMake Project
Use STM32CubeMX-generated startup, HAL, CMSIS, and device support files from a CMake project without making STM32CubeIDE the owner of the workflow.
Working with STM32 Peripherals
Blinking an LED on STM32 Without Magic
Blink the Nucleo L433RC-P user LED by identifying the board pin, enabling the GPIO peripheral clock, configuring output mode, and toggling the pin deliberately.
STM32 Development with CMake and VSCode
Building and Flashing STM32 Firmware Without CubeIDE
Build a linked STM32 firmware image, generate binary and hex outputs, and flash the Nucleo board from command-line tools instead of STM32CubeIDE.
STM32 Development with CMake and VSCode
Creating a Minimal STM32 CMake Project
Create the smallest useful STM32 CMake project structure before adding startup code, linker scripts, flashing, or debugging.
Working with STM32 Peripherals
I2C on STM32 for Real Modules
Bring up STM32 I2C for real breakout modules by checking wiring, pull-ups, addresses, timing, HAL return codes, and bus-level debugging assumptions.
STM32 Development with CMake and VSCode
Installing the STM32 CMake Toolchain on macOS
Install the compiler, build tools, flashing utilities, and VSCode extensions needed for STM32 development with CMake on macOS.
Working with STM32 Peripherals
Organizing a Small STM32 Firmware Project
Organize a small STM32 firmware project after adding GPIO, timers, UART, I2C, and SPI by separating board support, peripheral setup, drivers, and application code.
STM32 Development with CMake and VSCode
Organizing Reusable STM32 CMake Projects
Structure an STM32 CMake project so application code, board configuration, startup files, linker scripts, generated vendor code, and reusable drivers have clear ownership.
Working with STM32 Peripherals
Reading a Button on STM32
Read the Nucleo L433RC-P user button as a GPIO input, handle active logic level correctly, and add a simple debounce check before using the button to control firmware behavior.
STM32 Development with CMake and VSCode
Running STM32 Firmware Under a VSCode Debugger
Configure VSCode to launch an STM32 debug session through OpenOCD, stop in firmware, step through startup code, and inspect target state.
Working with STM32 Peripherals
SPI on STM32 for Real Modules
Bring up STM32 SPI for real modules by checking SCK, MOSI, MISO, chip select, mode, baud prescaler, GPIO alternate functions, and transaction debugging.
Working with STM32 Peripherals
Touring the STM32 Nucleo L433RC-P for Peripheral Projects
Map the STM32 Nucleo L433RC-P board features that matter for peripheral projects: ST-LINK, power, reset, user LED, user button, headers, and expansion connectors.
Working with STM32 Peripherals
UART Logging on STM32
Set up UART output on STM32 for simple firmware logs, connect baud-rate settings to clock assumptions, and use serial output alongside LEDs and the debugger.
Working with STM32 Peripherals
Understanding STM32 Clocks Enough to Build Projects
Learn the practical STM32 clock concepts needed for timers, UART, I2C, SPI, delays, and peripheral bring-up without turning the clock tree into a reference manual.
STM32 Development with CMake and VSCode
Understanding the STM32 Linker Script
Understand how an STM32 linker script describes flash, RAM, stack, heap, and firmware sections before startup code runs.
Working with STM32 Peripherals
Using Timers on STM32
Use an STM32 hardware timer for periodic work by connecting clock assumptions, prescalers, auto-reload values, update events, and a simple LED timing example.
STM32 Development with CMake and VSCode
Why Use CMake and VSCode for STM32 Development?
A practical look at why this site uses CMake and VSCode for STM32 firmware instead of making STM32CubeIDE the main project workflow.
∅
No articles match this filter combination. Try clearing a filter or a different keyword.