commit c79c65424c9fd937e0e8bb58e143c06ee47e5293 Author: Luca Date: Sat Jan 13 03:04:08 2024 +0100 initial commit diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..29348f2 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,12 @@ +[build] +target = "riscv32ec-unknown-none-elf" + +[target.riscv32ec-unknown-none-elf] +runner = "wlink -v flash --enable-sdi-print" +rustflags = [ + "-C", "link-arg=-Tlink.x", + "-C", "opt-level=s", +] + +[unstable] +build-std = ["core", "compiler_builtins"] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..65f88c0 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,233 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "ch32v0" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff5bb4d8b8f1b3a2efb017507f2ee3abb5f69c16df30f21b329a2402bb9901e" +dependencies = [ + "critical-section", + "riscv", + "vcell", +] + +[[package]] +name = "ch32v003-test" +version = "0.1.0" +dependencies = [ + "ch32v00x-hal", + "embedded-hal 0.2.7", + "panic-halt", + "qingke-rt", +] + +[[package]] +name = "ch32v00x-hal" +version = "0.1.0" +source = "git+https://github.com/lujoga/ch32v00x-hal.git?branch=qingke-rt#7d0751742dd47b503d857c78f9f7244b057391eb" +dependencies = [ + "ch32v0", + "critical-section", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0-rc.1", + "fugit", + "fugit-timer", + "nb 1.1.0", + "qingke", +] + +[[package]] +name = "critical-section" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" + +[[package]] +name = "embedded-hal" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "embedded-hal" +version = "1.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2894bc2f0457b8ca3d6b8ab8aad64d9337583672494013457f86c5a9146c0e22" + +[[package]] +name = "fugit" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17186ad64927d5ac8f02c1e77ccefa08ccd9eaa314d5a4772278aa204a22f7e7" +dependencies = [ + "gcd", +] + +[[package]] +name = "fugit-timer" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9607bfc4c388f9d629704f56ede4a007546cad417b3bcd6fc7c87dc7edce04a" +dependencies = [ + "fugit", + "nb 1.1.0", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "nb" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" + +[[package]] +name = "panic-halt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qingke" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310db40c1e32b18af583b7f84036d819e804e01004628b60dfb1c908b1fcd5c6" +dependencies = [ + "bit_field", + "riscv", +] + +[[package]] +name = "qingke-rt" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1effb507fe025260cbd7d7cbfdf1c77fd2e107919a1f7d64aed02f4e61e5b22" +dependencies = [ + "qingke", + "qingke-rt-macros", +] + +[[package]] +name = "qingke-rt-macros" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d84a2334539f5e02dc7d1eb01087e1fe1a5b1db66a40858d4142e0b63c74fc" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "riscv" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa3145d2fae3778b1e31ec2e827b228bdc6abd9b74bb5705ba46dcb82069bc4f" +dependencies = [ + "bit_field", + "critical-section", + "embedded-hal 0.2.7", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "vcell" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..74a5308 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "ch32v003-test" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +ch32v00x-hal = { git = "https://github.com/lujoga/ch32v00x-hal.git", branch = "qingke-rt", features = ["ch32v003", "rt"] } +embedded-hal = "0.2.7" +panic-halt = "0.2.0" +qingke-rt = "0.1.7" diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0066924 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,36 @@ +#![no_std] +#![no_main] + +use ch32v00x_hal as hal; + +use embedded_hal::blocking::delay::DelayUs; + +use hal::println; +use hal::debug::SDIPrint; +use hal::delay::CycleDelay; +use hal::pac::Peripherals; +use hal::prelude::*; + +use panic_halt as _; + +#[qingke_rt::entry] +fn main() -> ! { + SDIPrint::enable(); + + let p = Peripherals::take().unwrap(); + + let mut rcc = p.RCC.constrain(); + let clocks = rcc.config.freeze(); + + let gpioc = p.GPIOC.split(&mut rcc); + let mut led = gpioc.pc1.into_push_pull_output(); + + println!("Hello, world!\r"); + + let mut delay = CycleDelay::new(&clocks); + loop { + println!(".\r"); + led.toggle(); + delay.delay_us(500_000u32); + } +}