Drivers & ISRs 9
UART receive ring bufferDrivers & ISRs · Medium · 4 bugs · ~6 minSPI NOR flash driverDrivers & ISRs · Medium · 4 bugs · ~6 minSTM32 HAL I2C readDrivers & ISRs · Warm-up · 4 bugs · ~4 minButton debounce in an EXTI ISRDrivers & ISRs · Warm-up · 3 bugs · ~4 minIndependent watchdog usageDrivers & ISRs · Medium · 3 bugs · ~5 minFlags shared with an ISRDrivers & ISRs · Medium · 2 bugs · ~5 minRuntime baud-rate changeDrivers & ISRs · Warm-up · 3 bugs · ~5 minCAN node goes silent for goodDrivers & ISRs · Medium · 3 bugs · ~7 minSPI writes that don't stickDrivers & ISRs · Medium · 3 bugs · ~6 min
RTOS 11
FreeRTOS sensor pipelineRTOS · Hard · 5 bugs · ~8 minSharing SPI between tasksRTOS · Medium · 3 bugs · ~6 minLogging through a queueRTOS · Warm-up · 3 bugs · ~4 minCritical sections and scheduler locksRTOS · Medium · 4 bugs · ~5 minPeriodic control loopRTOS · Medium · 3 bugs · ~5 minNested mutexes under loadRTOS · Hard · 3 bugs · ~8 minTask check-in watchdogRTOS · Medium · 3 bugs · ~7 minOS sanity watchdog hooksRTOS · Hard · 3 bugs · ~7 minSynchronous request and replyRTOS · Hard · 3 bugs · ~8 minReport task stack overflowRTOS · Medium · 3 bugs · ~6 minEncoder ISR at top priorityRTOS · Medium · 3 bugs · ~6 min
Timing 6
Tick timeouts and delaysTiming · Warm-up · 3 bugs · ~4 min64-bit microsecond timestampsTiming · Medium · 2 bugs · ~5 minPWM duty and frequency controlTiming · Medium · 5 bugs · ~6 minFixed-point speed loopTiming · Medium · 3 bugs · ~6 minFlow meter input captureTiming · Medium · 3 bugs · ~6 minMicrosecond delays that hangTiming · Medium · 3 bugs · ~6 min
Memory & C 9
Casting a byte stream to a structMemory & C · Medium · 4 bugs · ~6 minInteger promotion trapsMemory & C · Medium · 3 bugs · ~5 minStrings on the stackMemory & C · Warm-up · 3 bugs · ~4 minArray helpers with memcpyMemory & C · Warm-up · 3 bugs · ~4 minHeap use in a message handlerMemory & C · Medium · 3 bugs · ~5 minRegister access macrosMemory & C · Warm-up · 3 bugs · ~4 minPacking a log recordMemory & C · Medium · 3 bugs · ~6 minStatus register as C bitfieldsMemory & C · Hard · 3 bugs · ~7 minHelpers shared by two tasksMemory & C · Medium · 3 bugs · ~6 min
Protocols 10
Serial command parserProtocols · Warm-up · 3 bugs · ~4 minTLV provisioning parserProtocols · Hard · 4 bugs · ~7 minBuilding a framed packetProtocols · Medium · 3 bugs · ~6 minRS-485 Modbus RTU linkProtocols · Medium · 3 bugs · ~5 minBLE characteristic write handlerProtocols · Medium · 4 bugs · ~6 minWi-Fi reconnect handlerProtocols · Medium · 3 bugs · ~6 minCAN receive filter and handlerProtocols · Medium · 3 bugs · ~7 minRS-485 transmit with DMAProtocols · Medium · 3 bugs · ~7 minStuck I2C bus after resetProtocols · Medium · 3 bugs · ~7 minAccelerometer readings make no senseProtocols · Warm-up · 3 bugs · ~5 min
Low power 5
Entering and leaving STOP modeLow power · Medium · 3 bugs · ~5 minBattery voltage measurementLow power · Medium · 3 bugs · ~5 minSleep until there's workLow power · Hard · 3 bugs · ~7 minSleep current sixty times too highLow power · Medium · 3 bugs · ~6 minRTC wake-up from STOP 2Low power · Medium · 3 bugs · ~7 min
Boot & OTA 8
Bootloader jump to applicationBoot & OTA · Hard · 3 bugs · ~6 minSwitching OTA slotsBoot & OTA · Medium · 3 bugs · ~5 minSaving settings to internal flashBoot & OTA · Medium · 3 bugs · ~5 minData retained across resetsBoot & OTA · Hard · 3 bugs · ~6 minBootloader image verificationBoot & OTA · Hard · 3 bugs · ~8 minSettings and calibration in one pageBoot & OTA · Medium · 4 bugs · ~7 minOTA chunk writerBoot & OTA · Hard · 3 bugs · ~8 minAnti-rollback check in the bootloaderBoot & OTA · Hard · 3 bugs · ~7 min
DMA & graphics 6
ADC with circular DMADMA & graphics · Hard · 3 bugs · ~7 minLogging over UART with DMADMA & graphics · Medium · 3 bugs · ~5 minLTDC double bufferingDMA & graphics · Hard · 3 bugs · ~7 minLVGL flush callback with DMA2DDMA & graphics · Medium · 3 bugs · ~5 minTouch controller interruptDMA & graphics · Medium · 4 bugs · ~6 minSPI DMA on a cached coreDMA & graphics · Hard · 3 bugs · ~7 min
Embedded Linux 6
Character driver read()Embedded Linux · Medium · 3 bugs · ~7 minSerial GPS reader on LinuxEmbedded Linux · Medium · 4 bugs · ~6 minPing diagnostic on a Linux gatewayEmbedded Linux · Medium · 3 bugs · ~6 minGPIO through /dev/memEmbedded Linux · Medium · 3 bugs · ~6 minTouch driver interrupt handlerEmbedded Linux · Hard · 3 bugs · ~7 minADC over spidevEmbedded Linux · Medium · 3 bugs · ~6 min
Test & validation 4
Every challenge runs in the browser. No install, and the bug hunts are free.
Start practising