В настоящее время я пытаюсь изучить Rust (в частности, для встроенных), исходя из опыта C для встроенных систем и Python. До сих пор я читал язык программирования Rust и Rust для встраиваемых систем и прочитайте несколько сообщений в блогах в Интернете.
Я хочу, чтобы мой первый проект был простым Blinky, где светодиод мигает бесконечно. У меня есть плата STM32L152CDISCOVERY с чипом STM32L152 (в основном таким же, как STM32L151), который представляет собой Cortex M3.
Вместо того, чтобы реализовывать все с нуля, я хочу использовать существующие ящики и HAL. Я нашел два многообещающих: stm32l1 и stm32l1xx-hal. Я пытался прочитать документацию каждого из них, а также часть исходного кода, но до сих пор не могу понять, как их правильно использовать.
Есть несколько вопросов о Rust и о ящиках:
Я вижу, что
stm32l1xx-hal
зависит отstm32l1
. Нужно ли мне добавлять оба в качестве зависимости в мой файлCargo.toml
? Или это создаст проблемы, связанные с правом собственности?Это правильный способ добавить их? Почему второй так добавлен
[dependencies.stm32l1]
?[dependencies] cortex-m-rt = "0.6.10" cortex-m-semihosting = "0.3.3" panic-halt = "0.2.0" stm32l1xx-hal = "0.1.0" [dependencies.stm32l1] version = "0.13.0" features = ["stm32l151", "rt"]
Чтобы мигать LD4 (который подключен к
PB4PB6), я должен включить GPIOB в регистре RCC, а затем настроить контакт для двухтактного вывода. Просматривая документациюstm32l1xx-hal
, я вижу, что есть Структура RCC и PB4 struct с помощью методаinto_push_pull_output
. Однако я до сих пор не понимаю, как использовать эти структуры: как их импортировать или как получить их экземпляр.
Я видел примеры кода для stm32l1
, но не для stm32l1xx-hal
. Я знаю, что я могу сделать это:
use stm32l1::{stm32l151};
...
let p = stm32l151::Peripherals::take().unwrap();
p.RCC.ahbenr.modify(|_,w| w.gpiopben().set_bit());
Но в исходниках stm32l1xx-hal
я вижу, что часть RCC уже сделана в impl GpioExt for $GPIOX
, но я не знаю, как добраться до функционала этой части.
Любая помощь, которая указывает мне правильное направление, приветствуется.