初心者が組み込みRustやってみる - その2
初心者が組み込みRustやってみる - その1 - kanno's blog
のつづき。
5. LEDルーレット
こちらのリポジトリからテンプレートをクローンしてきて実行する。
5.1 ビルド
以下のコマンドがうまくいかず。
cargo readobj --target thumbv7em-none-eabihf --bin led-roulette -- -file-headers
のIssueを参考に cargo-binutils
のバージョンを0.3.0に上げてみたところ、うまくいった。
5.5 課題
8つのLEDを順番に点灯、消灯させる課題が与えられる。
以下のような実装で実現できた。
#![deny(unsafe_code)] #![no_main] #![no_std] use aux5::{entry, prelude::*, Delay, Leds}; #[entry] fn main() -> ! { let (mut delay, mut leds): (Delay, Leds) = aux5::init(); let half_period = 50_u16; let mut prev = 0; let mut curr = 1; loop { leds[curr].on(); delay.delay_ms(half_period); leds[prev].off(); delay.delay_ms(half_period); prev = curr; curr = (curr + 1) % 8; } }
組み込みRustに入門中⚙️ pic.twitter.com/wSMMzpczND
— kanno (@m_kann0) 2021年2月1日