Back to Gallery
Embedded Stm32 Hal Agent Rule
View Full Resolution
100% Free Access
AI Architecture Cursor AI / Claude 3.5
Category AI Agents
Best Use Case Commercial & Cinematic
AI Agents Verified Blueprint

Embedded Stm32 Hal Agent Rule

Embedded C/C++ rules for MCU, STM32, HAL, interrupts, DMA, memory constraints, and hardware-focused testing

Ready-to-Run Prompt
100% Free Copy
# Embedded MCU, STM32, and HAL Rules

## Project Structure

- Keep board support, drivers, middleware, application logic, and tests separate.
- Isolate generated CubeMX or vendor code from hand-written application code.
- Put hardware abstraction behind narrow interfaces so logic can be tested without hardware.
- Document clock tree, pin mappings, peripheral ownership, and interrupt priorities.

## STM32 HAL and Peripherals

- Initialize peripherals in one place and avoid hidden reconfiguration.
- Check return values from HAL calls and handle timeout/error cases.
- Keep blocking HAL calls out of time-critical paths.
- Use DMA for high-throughput UART, SPI, I2C, ADC, or timer capture paths when appropriate.
- Document buffer ownership and lifetime for DMA operations.
- Use `volatile` only for memory shared with ISRs or hardware registers.

## Interrupts and Concurrency

- Keep ISRs short and deterministic.
- Defer heavy work from interrupts to the main loop, RTOS task, or event queue.
- Protect shared data with critical sections, atomics, queues, or RTOS primitives.
- Avoid dynamic allocation in interrupts.
- Make interrupt priority decisions explicit.

## Memory and Timing

- Avoid heap allocation in firmware unless the project explicitly allows it.
- Check stack usage for ISRs and RTOS tasks.
- Keep lookup tables `const` so they can live in flash.
- Use fixed-width integer types for hardware-facing code.
- Add timeouts for hardware waits.
- Treat watchdog configuration as part of application design, not a late add-on.

## Testing and Debugging

- Unit test pure logic on host builds.
- Use hardware-in-the-loop tests for peripheral behavior.
- Add assertions for impossible hardware states in debug builds.
- Use SWD/JTAG, logic analyzers, and serial logs with rate limits.
- Keep fault handlers useful: capture reset reason, fault registers, and build version when possible.

## Common Mistakes

- Do not modify generated files unless the workflow preserves changes.
- Do not busy-wait forever on hardware flags.
- Do not share buffers between DMA and CPU without synchronization.
- Do not assume peripheral reset state after low-power modes.

Structured JSON Schema

Use with automated API pipelines, LangChain, or custom image generators

{
    "system_prompt": "# Embedded MCU, STM32, and HAL Rules\n\n## Project Structure\n\n- Keep board support, drivers, middleware, application logic, and tests separate.\n- Isolate generated CubeMX or vendor code from hand-written application code.\n- Put hardware abstraction behind narrow interfaces so logic can be tested without hardware.\n- Document clock tree, pin mappings, peripheral ownership, and interrupt priorities.\n\n## STM32 HAL and Peripherals\n\n- Initialize peripherals in one place and avoid hidden reconfiguration.\n- Check return values from HAL calls and handle timeout/error cases.\n- Keep blocking HAL calls out of time-critical paths.\n- Use DMA for high-throughput UART, SPI, I2C, ADC, or timer capture paths when appropriate.\n- Document buffer ownership and lifetime for DMA operations.\n- Use `volatile` only for memory shared with ISRs or hardware registers.\n\n## Interrupts and Concurrency\n\n- Keep ISRs short and deterministic.\n- Defer heavy work from interrupts to the main loop, RTOS task, or event queue.\n- Protect shared data with critical sections, atomics, queues, or RTOS primitives.\n- Avoid dynamic allocation in interrupts.\n- Make interrupt priority decisions explicit.\n\n## Memory and Timing\n\n- Avoid heap allocation in firmware unless the project explicitly allows it.\n- Check stack usage for ISRs and RTOS tasks.\n- Keep lookup tables `const` so they can live in flash.\n- Use fixed-width integer types for hardware-facing code.\n- Add timeouts for hardware waits.\n- Treat watchdog configuration as part of application design, not a late add-on.\n\n## Testing and Debugging\n\n- Unit test pure logic on host builds.\n- Use hardware-in-the-loop tests for peripheral behavior.\n- Add assertions for impossible hardware states in debug builds.\n- Use SWD/JTAG, logic analyzers, and serial logs with rate limits.\n- Keep fault handlers useful: capture reset reason, fault registers, and build version when possible.\n\n## Common Mistakes\n\n- Do not modify generated files unless the workflow preserves changes.\n- Do not busy-wait forever on hardware flags.\n- Do not share buffers between DMA and CPU without synchronization.\n- Do not assume peripheral reset state after low-power modes.",
    "prompt_type": "agent_rule",
    "framework": "cursor",
    "globs": "[\"**/*.c\", \"**/*.h\", \"**/*.cpp\", \"**/*.hpp\", \"**/*.ioc\", \"CMakeLists.txt\", \"Makefile\", \"platformio.ini\"]",
    "compatible_models": [
        "Claude 3.5 Sonnet",
        "GPT-4o",
        "Cursor AI",
        "Gemini 2.5 Flash"
    ],
    "download_filename": "embedded-stm32-hal.cursorrules",
    "tags": [
        "cursor",
        "cursorrules",
        "agent",
        "coding",
        "embedded"
    ]
}
Internal Discovery

More AI Agents Prompts

View All →