diff options
author | Brian Cully <bjc@kublai.com> | 2022-08-04 07:26:35 -0400 |
---|---|---|
committer | Brian Cully <bjc@kublai.com> | 2022-08-04 07:26:35 -0400 |
commit | 8f9bc49bb40e2972cf0c0bf1b61eb8127a9397df (patch) | |
tree | 8a80aed807578319cfcf3d24cd62fd5ceef261e2 /src/main.rs | |
parent | b55fdd210ad34847ce8638e92fb311721853fbd8 (diff) | |
download | luchie-8f9bc49bb40e2972cf0c0bf1b61eb8127a9397df.tar.gz luchie-8f9bc49bb40e2972cf0c0bf1b61eb8127a9397df.zip |
Move LED to separate module.
Diffstat (limited to 'src/main.rs')
-rwxr-xr-x | src/main.rs | 45 |
1 files changed, 11 insertions, 34 deletions
diff --git a/src/main.rs b/src/main.rs index 8d95d00..aee0767 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,13 @@ #![no_std] #![no_main] +mod led; + use core::arch::global_asm; use gd32vf103_pac::Peripherals; +use led::LED; + global_asm!(include_str!("boot.S")); #[no_mangle] @@ -11,44 +15,17 @@ fn main(_hartid: usize) -> ! { // let peripherals = Peripherals::take().unwrap(); let peripherals = unsafe { Peripherals::steal() }; - let rcu = peripherals.RCU; - // enable RCU_GPIOA - rcu.apb2en.write(|w| { - w.paen().set_bit() - }); - - let gpio = peripherals.GPIOA; - // led is gpioa pin 7 output push/pull 50mhz - gpio.ctl0.write(|w| unsafe { - // output mode, push-pull - w.ctl7().bits(0b00); - // 50 mhz output rate - w.md7().bits(0b11); - w - }); - - let mut led_on = false; + let led = LED::new(&peripherals); loop { - if led_on { - gpio.bc.write(|w| w.cr7().set_bit()); - if gpio.octl.read().octl7().bit() { - panic!("not set"); - } - } else { - gpio.bop.write(|w| w.bop7().set_bit()); - if !gpio.octl.read().octl7().bit() { - panic!("set"); - } - } - led_on = !led_on; - - let mut a = 0; - for _ in 1..100_000 { - a = gpio.octl.read().bits(); - } + led.toggle(); + delay(); } } +fn delay() { + for _ in 1..100_000 {} +} + #[panic_handler] fn panic(info: &core::panic::PanicInfo) -> ! { if let Some(loc) = info.location() { |