Создание новых проектов
Теперь мы используем cargo-generate (универсальный мастер создания проектов), чтобы настроить наше первое приложение.
Подробнее о создании проектов — в главе Writing Your Own Application книги The Rust on ESP Book.
Большинство других упражнений этого практикума уже содержат готовую заготовку проекта и не требуют
cargo-generate.
✅ Установите cargo-generate:
cargo install cargo-generate
✅ Перейдите в папку intro и запустите cargo generate с шаблоном esp-idf:
cd intro
cargo generate esp-rs/esp-idf-template cargo
Мастер запросит данные о вашем новом проекте. Если предлагается выбор из нескольких вариантов, переключайтесь стрелками вверх и вниз и выбирайте клавишей Enter.
Первое сообщение, которое вы увидите:
⚠️Unable to load config file: /home/$USER/.cargo/cargo-generate.toml. Эта ошибка возникает, потому что у вас нет файла избранных настроек, но он вам не нужен, и это предупреждение можно игнорировать.
🔎 Вы можете создать файл избранных настроек, который будет размещён в $CARGO_HOME/cargo-generate, и переопределить его через -c, --config <config-file>.
Если ошиблись, нажмите
Ctrl+Cи начните заново.
✅ Настройте проект:
(Эти пункты могут появиться в другом порядке)
- Project Name:
hello-world - MCU:
esp32c3 - Configure advanced template options?:
false
🔎 .cargo/config.toml содержит локальные настройки (список всех настроек) для вашего пакета.
Cargo.toml содержит зависимости, а Cargo.lock фиксирует все ваши зависимости.
Необязательно, но рекомендуется: чтобы сэкономить место на диске и время загрузки, задайте общий каталог инструментов. Иначе каждый новый проект или рабочее пространство получит собственную копию этих инструментов на вашем компьютере:
✅ Откройте hello-world/.cargo/config.toml и добавьте следующую строку в конец секции [env]. Остальное не меняйте.
[env]
# ...
ESP_IDF_TOOLS_INSTALL_DIR = { value = "global" } # добавьте эту строку
✅ Откройте hello-world/rust-toolchain.toml и приведите файл к такому виду:
[toolchain]
channel = "nightly-2025-01-01" # измените эту строку
✅ Запустите проект следующей командой, находясь в папке hello-world:
cd hello-world
cargo run
✅ Последние строки вывода должны выглядеть так:
(...)
I (268) cpu_start: Starting scheduler.
Hello, world!
Дополнительные задания
- Если функция
mainзавершается, для повторного запуска нужно перезагрузить микроконтроллер. Что произойдёт, если вместо этого в конце поставить бесконечный цикл? Проверьте свою догадку, прошив программу с циклом. - Можете придумать, как избежать того, что вы сейчас видите? (нажмите, чтобы увидеть подсказку:1)
Устранение неполадок
- Если
cargo runзависает наConnecting..., возможно, ещё работает другой процесс монитора (например, оставшийся после начальной проверкиhardware-check). Попробуйте найти его и завершить. Если не помогло, отключите и снова подключите USB-кабель платы. ⛔ Git Error: authentication required: скорее всего, ваша конфигурация git подменяет HTTPS-адреса GitHub на SSH. Проверьте глобальный~/.git/configна наличие секцийinsteadOfи отключите их.
-
отдайте управление операционной системе, вызывая
sleepв цикле вместо активного ожидания (busy waiting). (используйтеuse std::thread::sleep) ↩