Я пытаюсь сделать "Blinky" для STM32F1xx в Rust. Я знаю, что для этого существуют библиотеки, но я хочу создать свою собственную "lib" для учебных целей.
Я могу получить доступ к регистрам STM32 по их адресам, подобным этому в C:
*(uint32_t*)(0x40021000 + 0x018) |= 0x10;
*(uint32_t*)(0x40011000 + 0x004) |= 0x33;
*(uint32_t*)(0x40011000 + 0x004) &= ~0xCC;
*(uint32_t*)(0x40011000 + 0x10) |= 0x300;
while(1) {}
Это записывает некоторые биты в регистр RCC_APB2ENR
, чтобы включить синхронизацию порта C, настраивает контакты и включает светодиоды в моем обнаружении.
Мне нужно переписать это в Rust, создать consts, fns и начать писать хороший Rusty-код. Возможно ли это в Rust без FFI, вызывающего код C? Могу ли я достичь этого с помощью макроса asm!
?