aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rwxr-xr-xsrc/main.rs45
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() {