К основному содержанию
правило

embedded-stm32-hal — правило для Cursor: STM32, HAL и DMA

Правило для Cursor, которое задаёт агенту рамки при работе с прошивками на C и C++: STM32 HAL, прерывания, DMA, экономия памяти.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/embedded-stm32-hal.mdc
Открыть на GitHub

Что делает embedded-stm32-hal

Файл описывает, как вести себя в коде микроконтроллеров. Агент держит раздельно board support, драйверы, middleware, прикладную логику и тесты, а сгенерированный CubeMX или вендорный код не смешивает с написанным руками. Аппаратная абстракция прячется за узкими интерфейсами, чтобы логику можно было прогонять без железа.

По периферии требования конкретные: инициализация в одном месте, проверка возвращаемых значений HAL-вызовов, обработка таймаутов и ошибок, никаких блокирующих вызовов на критичном по времени пути. Для UART, SPI, I2C, ADC и захвата таймеров правило советует DMA, но требует задокументировать владение буфером и его время жизни. volatile разрешён только для памяти, которой обмениваются с ISR, или для регистров.

Прерывания должны оставаться короткими, тяжёлую работу агент выносит в главный цикл, задачу RTOS или очередь событий. Динамическое выделение в прерываниях запрещено, а heap в прошивке — только если проект это явно разрешает. Отдельный блок про типичные ошибки: не править сгенерированные файлы, не крутиться вечно на флагах железа, не отдавать один буфер DMA и CPU без синхронизации. Если у вас в проекте есть .ioc или platformio.ini, правило подхватится по globs.

Какие задачи решает

  • разложить прошивку на драйверы, middleware и прикладной код
  • вынести тяжёлую работу из обработчика прерывания
  • настроить DMA для UART, SPI или ADC и не потерять буфер
  • проверить возвращаемые значения HAL-вызовов и таймауты
  • прогнать логику на хосте без подключённой платы

Примеры запросов агенту

  • Проверь этот модуль работы с DMA: где буфер может уйти из-под CPU?
  • Перепиши обработчик прерывания, чтобы он остался коротким
  • Добавь таймауты в ожидание флагов периферии

Как установить embedded-stm32-hal

Вручную: положить файлы

.cursor/rules/embedded-stm32-hal.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Из того же набора68

htmx-django-cursorrules-prompt-file Правило для Cursor, которое задаёт агенту привычки Django при работе с HTMX: шаблоны, формы, CSRF, class-based views. ★ 41 011звёзд репо how-to-documentation-cursorrules-prompt-file Правило превращает технические шаги, тест-скрипты и скриншоты в пошаговые инструкции для нетехнических пользователей. Пригодится, когда нужно писать «How To» по фиче. ★ 41 011звёзд репо graphical-apps-development-cursorrules-prompt-file Правило Cursor, которое задаёт агенту контекст проекта Pyllments: графовые LLM-приложения на Python с Panel и Langchain. ★ 41 011звёзд репо flutter-development-guidelines-cursorrules-prompt-file Задаёт структуру проекта, нейминг и стиль Dart для Flutter-приложений на MVVM с Riverpod. Пригодится, когда агент в Cursor разносит код по папкам как попало. ★ 41 011звёзд репо dragonruby-best-practices-cursorrules-prompt-file Правило для Cursor, которое задаёт стиль кода на Ruby в DragonRuby Game Toolkit: имена, структура файлов, обработка ошибок. ★ 41 011звёзд репо database Правило для Cursor с набором практик по Prisma и Supabase: схемы, миграции, запросы, RLS-политики. Подключается к файлам базы по маске. ★ 41 011звёзд репо cypress-defect-tracking-cursorrules-prompt-file Правило для Cursor, которое превращает агента в QA-инженера: пишет тесты Cypress с тегами команд, категорий и case ID и собирает отчёты через qa-shadow-report. ★ 41 011звёзд репо cursorrules-cursor-ai-wordpress-draft-macos-prompt Правило Cursor, которое описывает проект PressThat: системный трей-апп для WordPress, создающий черновики записей. Пригодится, если вы ведёте этот проект в Cursor. ★ 41 011звёзд репо

Похожие

embedded-systems https://github.com/Jeffallan Скилл настраивает агента на разработку прошивок для STM32 и ESP32. Он помогает писать драйверы, FreeRTOS-задачи и оптимизировать потребление памяти и энергии. CX Codex +1 6 800установок stm32-baremetal mohitmishra786 Ведёт агента по сборке прошивки STM32 на одних заголовках CMSIS: тактовые частоты, RCC, линкерный скрипт, сборка через arm-none-eabi-gcc. CX Codex +1 360установок embedded-iot-mentor Alireza Rezvani Помогает спланировать разработку электроники и IoT: выбрать плату, прошивку и способ вывода данных с датчиков. Пригодится при сборке прототипа на макетной плате. 22установок arm-cortex-expert Ryan Snodgrass Пишет драйверы и прошивки под ARM Cortex-M: Teensy, STM32, nRF52, SAMD. Помогает, когда код работает с отладочной печатью и падает без неё. CX Codex ★ 41 729звёзд репо domain-embedded actionbook Направляет работу с embedded и no_std Rust: памятью, прерываниями и периферией. Пригодится при разработке прошивок для микроконтроллеров. CX Codex +1 2 900установок expert-embedded-c-engineer официальный github Субагент для встраиваемого C: подсказывает по MISRA C:2012/2025, CERT C и статическому анализу. Пригодится, когда код идёт в safety-critical систему. ★ 40 418звёзд репо

Рядом в теме «Языки программирования»

Все правила IDE по теме «Языки программирования» →

Вопросы о embedded-stm32-hal

Как установить embedded-stm32-hal в Cursor?

Положите файл по пути .cursor/rules/embedded-stm32-hal.mdc в проекте. Cursor подхватит его как правило для файлов, подходящих под globs.

Что делает embedded-stm32-hal?

Задаёт агенту правила для embedded C/C++: структура проекта, работа с STM32 HAL, прерывания, DMA, ограничения по памяти и тестирование на железе.

Для каких файлов применяется правило?

Globs охватывают **/*.c, **/*.h, **/*.cpp, **/*.hpp, **/*.ioc, CMakeLists.txt, Makefile и platformio.ini. Автоприменение выключено, поэтому правило срабатывает по совпадению с этими путями.

Исходный текст

embedded-stm32-hal.mdc · CC0-1.0
---
description: Embedded C/C++ rules for MCU, STM32, HAL, interrupts, DMA, memory constraints, and hardware-focused testing
globs: ["**/*.c", "**/*.h", "**/*.cpp", "**/*.hpp", "**/*.ioc", "CMakeLists.txt", "Makefile", "platformio.ini"]
alwaysApply: false
---

# 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.

© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой