# stm32f401rc-blackpill

Знания по плате STM32F401RCT6 с загрузчиком WeAct: сборка в PlatformIO, линковка на 0x08004000, часы 84 МГц и USB-консоль.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · ★ 22
- Автор: alexex1993
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/alexex1993/mcu-skills/tree/HEAD/skills/stm32/stm32f401rc-blackpill/SKILL.md
- Обновлён: 2026-10-15
- HTML: https://affpapa.org/nevibecode/skills/stm32f401rc-blackpill

## Что делает

Плата в 40-пиновом формате Black Pill с STM32F401RCT6 (256 КБ флеша, 64 КБ RAM, до 84 МГц) примечательна не чипом, а первыми 16 КБ флеша: там живёт HID-загрузчик WeAct Studio. Приложение стартует с `0x08004000`, и код, написанный в расчёте на `0x08000000`, ломается сразу после прошивки.

Скилл даёт агенту карту железа: светодиод PC13, кнопка KEY на PA0 с подтяжкой, кварц 25 МГц, USB-C на USB_OTG_FS. Внутри рецепты с готовым `platformio.ini`, правкой линкер-скрипта, обработчиком `Reset_Handler`, который маскирует прерывания и перенастраивает VTOR, деревом тактирования 84/48 МГц и консолью USB CDC вместо `printf` в UART. Есть шаблон проекта с миганием и консолью.

Без собственного `SysTick_Handler()` с `HAL_IncTick()` плата зависнет на первом `HAL_Delay()`, поэтому этот обработчик обязателен — штатный шаблон `framework-stm32cube` его не поставляет. Прошивка через `upload_protocol = hid` не сработает: PlatformIO ищет устройство `1209:BEBA`, а загрузчик числится как `0483:572A`. Прошивка через ROM DFU или ST-Link стирает загрузчик, а восстановление из дампа чужой платы приводит к массовому стиранию флеша из-за несовпадения UID.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add alexex1993/mcu-skills --skill stm32f401rc-blackpill -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/stm32f401rc-blackpill/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/stm32f401rc-blackpill/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add alexex1993/mcu-skills --skill stm32f401rc-blackpill -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/stm32f401rc-blackpill/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add alexex1993/mcu-skills --skill stm32f401rc-blackpill -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/stm32f401rc-blackpill/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install alexex1993/mcu-skills stm32f401rc-blackpill
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/stm32f401rc-blackpill/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add alexex1993/mcu-skills --skill stm32f401rc-blackpill -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/alexex1993/mcu-skills --path skills/stm32/stm32f401rc-blackpill
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/stm32f401rc-blackpill/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add alexex1993/mcu-skills --skill stm32f401rc-blackpill -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/alexex1993/mcu-skills/tree/HEAD/skills/stm32/stm32f401rc-blackpill/SKILL.md

## Когда брать
- собрать проект PlatformIO под плату с загрузчиком в памяти
- перевести приложение на адрес 0x08004000 без зависания при старте
- получить printf-консоль через USB CDC без COM-порта
- настроить PLL на 84 МГц и 48 МГц для USB
- войти в загрузчик или восстановить его после стирания

## Примеры запросов агенту
- Настрой platformio.ini для STM32F401RCT6 за HID-загрузчиком, чтобы приложение линковалось на `0x08004000`.
- Мигание на PC13 не запускается, зависает в `HAL_Delay` — проверь `Reset_Handler` и `SysTick_Handler`.
- Сделай вывод `printf` через USB CDC на этой плате, без внешнего USB-UART.

## Похожие
- [migrate-to-shoehorn](https://affpapa.org/nevibecode/skills/migrate-to-shoehorn.md) — скилл · 475388 установок
- [write-swift](https://affpapa.org/nevibecode/skills/write-swift.md) — скилл · 119300 установок
- [megacave](https://affpapa.org/nevibecode/skills/megacave.md) — скилл · 25400 установок
- [find-docs](https://affpapa.org/nevibecode/skills/find-docs.md) — скилл · 9400 установок
- [typescript-advanced-types](https://affpapa.org/nevibecode/skills/typescript-advanced-types.md) — скилл · 92169 установок
- [smart-explore](https://affpapa.org/nevibecode/skills/smart-explore.md) — скилл · 7300 установок

Из того же набора: [alexex1993/mcu-skills](https://affpapa.org/nevibecode/by/alexex1993/mcu-skills.md) — 3 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
