#[entry]
fn main() -> ! {
let p = Peripherals::take().unwrap();
let gpio0 = p0::Parts::new(p.P0);
let pin: P0_01<Disconnected> = gpio0.p0_01;
// let gpio0_01_again = gpio0.p0_01; // Error, moved.
let pin_input: P0_01<Input<Floating>> = pin.into_floating_input();
if pin_input.is_high().unwrap() {
// ...
}
let mut pin_output: P0_01<Output<OpenDrain>> = pin_input
.into_open_drain_output(OpenDrainConfig::Disconnect0Standard1, Level::Low);
pin_output.set_high().unwrap();
// pin_input.is_high(); // Error, moved.
let _pin2: P0_02<Output<OpenDrain>> = gpio0
.p0_02
.into_open_drain_output(OpenDrainConfig::Disconnect0Standard1, Level::Low);
let _pin3: P0_03<Output<PushPull>> = gpio0.p0_03.into_push_pull_output(Level::Low);
loop {}
}
- ํ์
Copy
๋๋ Clone
์ ๊ตฌํํ์ง ์์ผ๋ฏ๋ก ๊ฐ๊ฐ ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌํ ์ ์์ต๋๋ค. ํ์ ํฌํธ ๊ตฌ์กฐ์ฒด ๋ฐ์ผ๋ก ์ด๋ํ๋ฉด ์๋ฌด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ฉด ์ด์ ํ ์ธ์คํด์ค๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ์ดํ์ ์ด์ ์ธ์คํด์ค๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ฐ ์ ํ์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๊ฒฝ์ฐ์๋ GPIO ํ์ ๊ตฌ์ฑ ์ํ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ํ ๋จธ์ ์ด ์ ํ ์์คํ
์ผ๋ก ์ธ์ฝ๋ฉ๋๋ฉฐ, ๋จผ์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ ํ ํน์ ๋ฐฉ์์ผ๋ก ํ์ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ์๋ชป๋ ์ํ ์ ํ์ ์ปดํ์ผ ์๊ฐ์ ํฌ์ฐฉ๋ฉ๋๋ค.
- ์
๋ ฅ ํ์์
is_high
๋ฅผ ํธ์ถํ๊ณ ์ถ๋ ฅ ํ์์ set_high
๋ฅผ ํธ์ถํ ์ ์์ง๋ง ๊ทธ ๋ฐ๋๋ก๋ ์ ๋ฉ๋๋ค.
- ๋ง์ HAL ํฌ๋ ์ดํธ๋ค์ด ์ด ํจํด์ ๋ฐ๋ฆ
๋๋ค.