diff --git a/out.bin b/out.bin index a0e67b6..8865467 100644 Binary files a/out.bin and b/out.bin differ diff --git a/out.hex b/out.hex index 569110f..6cf7958 100644 --- a/out.hex +++ b/out.hex @@ -2,32 +2,34 @@ :1000100081400141814101428142014381430144C8 :100020008144814601478147970100209381817D6A :10003000F32340F1B70200009382020063F47200E0 -:100040006F006018170100201301C17BB702000088 +:100040006F00001A170100201301C17BB7020000E6 :1000500093820240638603001E837D13E31F03FE29 :1000600033015140330401006F004000411106C6C6 :100070000008137101FF732540F197000000E7802D -:10008000201221C997000000E780401137050020A9 -:1000900013050500B7050020938505006377B500BB +:10008000C01321C997000000E780E0123705002067 +:1000900013050500B7050020938545006377B5007B :1000A000232005001105E36DB5FE3705002013057B -:1000B0000500B70500009385851F3706002013064D +:1000B0000500B7050000938545213706002013068B :1000C00006006378C500944114C111059105E36CE5 -:1000D000C5FE97000000E780E00D97000000E78074 +:1000D000C5FE97000000E780800F97000000E780D2 :1000E00060080000397106C016C21AC41EC62AC8AC :1000F0002ECA32CC36CE3AD03ED233050100EF00C4 :100100000002824092422243B2434245D2456246B7 :10011000F2460257925713014102730020300A84BD :10012000137101FFF325203463C7050022811703F3 -:10013000000067006306139515000581B145637CD7 -:10014000B5000A05B70500009385851C2E951C4156 -:1001500099C3228182872281170300006700E3038D -:1001600037150240C1450CCD3715014093050005F8 -:100170000CC1894537460F00130606244CC5B286CC -:1001800099C2FD16FDFE23260500B286E5DAFD16AE -:10019000FDFEEDB701A001A0228182800A841371C7 -:1001A00001FF01C573005010F5BF05452281828013 -:1001B0000A84137101FF370500001305450E731003 -:0801C00055302281828001A06C -:1001C8009601000096010000000000009601000062 -:1001D8009601000096010000000000009601000052 -:1001E8009601000096010000000000009601000042 +:10013000000067000308139515000581B145637C35 +:10014000B5000A05B70500009385451E2E951C4194 +:1001500099C32281828722811703000067008305EB +:100160003705002085452300B500371502400C4DAA +:1001700093E505010CCD371501400C4193F5F5F0E1 +:1001800093E505050CC1B7450F009385052450453F +:100190001366260050C52E8619C27D167DFE504579 +:1001A000759A50C52E8665D67D167DFECDB701A009 +:1001B00001A0228182800A84137101FF01C57300AE +:1001C0005010F5BF0545228182800A84137101FF1A +:1001D000370500001305450E7310553022818280CB +:0201E00001A07C +:1001E400B0010000B001000000000000B0010000F8 +:1001F400B0010000B001000000000000B0010000E8 +:10020400B0010000B001000000000000B0010000D7 :00000001FF diff --git a/src/main.rs b/src/main.rs index b59067b..2050e42 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,34 +3,31 @@ use panic_halt as _; use riscv_rt::entry; -// use ch32v003_pac::{Peripherals}; +use ch32v003_pac::{gpioc,rcc}; // entry!(main); #[entry] fn main() -> ! { - let RCC_APB2PCENR: *mut u32 = 0x4002_1018 as _; - let GPIOC_CFGLR: *mut u32 = 0x4001_1000 as _; - let GPIOC_OUTDR: *mut u32 = 0x4001_100C as _; - - unsafe { - RCC_APB2PCENR.write_volatile(0b1_0000); - // Write 0b0001 to pin 1 configuration - GPIOC_CFGLR.write_volatile(0b0101_0000); - + let p = unsafe { ch32v003_pac::Peripherals::steal()}; + // Enable GPIOC bank + p.RCC.apb2pcenr.modify(|_, w| w.iopcen().set_bit()); + // Configure GPIOC pin 1 + p.GPIOC.cfglr.modify(|_, w| { + w.cnf1().variant(0b01) // Open-Drain + .mode1().variant(0b01) // Output, 10Mhz + }); loop { - // Set pin 1 to high - GPIOC_OUTDR.write_volatile(0b1_0); - for _ in 0..1_000_000 { - core::hint::black_box(()); // Do nothing, but keep the loop - } - - // Set pin 1 to low - GPIOC_OUTDR.write_volatile(0b0_0); + // Turn pin 1 on + p.GPIOC.outdr.modify(|_, w| w.odr1().set_bit()); + for _ in 0..1_000_000 { + core::hint::black_box(()); + } - for _ in 0..1_000_000 { - core::hint::black_box(()); // Do nothing, but keep the loop - } + // Turn pin 1 off + p.GPIOC.outdr.modify(|_, w| w.odr1().clear_bit()); + for _ in 0..1_000_000 { + core::hint::black_box(()); + } } - } +} -} \ No newline at end of file