実際のところ
toml
[package] name = "teensy_led_blink" version = "0.1.0" edition = "2021" [dependencies] cortex-m = "0.7" #Teensy4.0のCortexの低レイヤ実装をする方法 cortex-m-rt = "0.7" #Teensy4.0の起動時のあれこれ。メモリ初期化とか embedded-hal = "0.2.7" #抽象レイヤー。今回はimxrt-halが実態実装 imxrt-hal = "0.5" #Teensy4.0のプロセッサに特化したHAL実装 teensy4-panic = "0.2" #Teensy4.0のエラーハンドラ
スクリプト
#![no_std] #![no_main] use teensy4_panic as _; // パニックハンドラ use cortex_m_rt::entry; use imxrt_hal as hal; use embedded_hal::digital::v2::OutputPin; #[entry] fn main() -> ! { // ペリフェラルの取得 let mut peripherals = hal::Peripherals::take().unwrap(); // LED (PIN13) の設定 let mut led = peripherals .iomuxc .gpio_ad_b0 .p13 .configure(&mut peripherals.iomuxc.gpr) .as_gpio(); // GPIOを出力モードに設定 led.set_fast(true); led.set_output(); loop { // LED点灯 led.set_high().unwrap(); // 遅延 cortex_m::asm::delay(30_000_000); // 約0.5秒 // LED消灯 led.set_low().unwrap(); // 遅延 cortex_m::asm::delay(30_000_000); // 約0.5秒 } }
Teensy4.0は600MHzで動作しているので、それの30,000,000サイクル=0.5秒。
もっとも、処理時間はすっ飛ばしてるので厳密に0.5秒じゃないのですが