UART функция черновик

dev

1
.gitignore vendored

@ -1,3 +1,4 @@
/target
/output
**/*.rs.bk
Cargo.lock

@ -1,2 +1,4 @@
target/*
target/
target/
output/*
output/

@ -7,7 +7,7 @@ version = "0.1.0"
[dependencies]
ch32v003-pac = { path = "./ch32v003-pac", features = ["rt"] }
# ch32v003-rt = { path = "./ch32v003-rt" }
riscv-rt = "0.11"
riscv-rt = "0.11.0"
panic-halt = "0.2.0"
[patch.crates-io]

Binary file not shown.

@ -1,3 +1,5 @@
cargo build --release
llvm-objcopy -O ihex target/riscv32ec-unknown-none-elf/release/ch32v003-experiments out.hex
llvm-objcopy -O binary target/riscv32ec-unknown-none-elf/release/ch32v003-experiments out.bin
mkdir output
llvm-objcopy -O ihex target/riscv32ec-unknown-none-elf/release/ch32v003-experiments output/out.hex
llvm-objcopy -O binary target/riscv32ec-unknown-none-elf/release/ch32v003-experiments output/out.bin
llvm-objdump -D target/riscv32ec-unknown-none-elf/release/ch32v003-experiments > output/out.list

Binary file not shown.

@ -1,35 +0,0 @@
:10000000B700000067808000735040307350403468
:1000100081400141814101428142014381430144C8
:100020008144814601478147970100209381817D6A
:10003000F32340F1B70200009382020063F47200E0
:100040006F00001A170100201301C17BB7020000E6
:1000500093820240638603001E837D13E31F03FE29
:1000600033015140330401006F004000411106C6C6
:100070000008137101FF732540F197000000E7802D
:10008000C01321C997000000E780E0123705002067
:1000900013050500B7050020938545006377B5007B
:1000A000232005001105E36DB5FE3705002013057B
:1000B0000500B7050000938545213706002013068B
:1000C00006006378C500944114C111059105E36CE5
:1000D000C5FE97000000E780800F97000000E780D2
:1000E00060080000397106C016C21AC41EC62AC8AC
:1000F0002ECA32CC36CE3AD03ED233050100EF00C4
:100100000002824092422243B2434245D2456246B7
:10011000F2460257925713014102730020300A84BD
:10012000137101FFF325203463C7050022811703F3
:10013000000067000308139515000581B145637C35
:10014000B5000A05B70500009385451E2E951C4194
:1001500099C32281828722811703000067008305EB
:100160003705002085452300B500371502400C4DAA
:1001700093E505010CCD371501400C4193F5F5F0E1
:1001800093E505050CC1B7450F009385052450453F
:100190001366260050C52E8619C27D167DFE504579
:1001A000759A50C52E8665D67D167DFECDB701A009
:1001B00001A0228182800A84137101FF01C57300AE
:1001C0005010F5BF0545228182800A84137101FF1A
:1001D000370500001305450E7310553022818280CB
:0201E00001A07C
:1001E400B0010000B001000000000000B0010000F8
:1001F400B0010000B001000000000000B0010000E8
:10020400B0010000B001000000000000B0010000D7
:00000001FF

@ -3,24 +3,33 @@
use panic_halt as _;
use riscv_rt::entry;
use ch32v003_pac::{gpioc,rcc};
pub struct huart{
boudrate:u32
}
// entry!(main);
#[entry]
fn main() -> ! {
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| {
let mut 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
.mode1().variant(0b01) // Output, 10Mhz
});
loop {
// Turn pin 1 on
uart_init(&mut p);
loop {
// Turn pin 1 on
p.GPIOC.outdr.modify(|_, w| w.odr1().set_bit());
for _ in 0..1_000_000 {
core::hint::black_box(());
core::hint::black_box(());
}
// Turn pin 1 off
@ -28,6 +37,43 @@ fn main() -> ! {
for _ in 0..1_000_000 {
core::hint::black_box(());
}
}
}
}
fn uart_init(p:&mut ch32v003_pac::Peripherals){
// Enable GPIOD
p.RCC.apb2pcenr.modify(|_,w| w.iopden().set_bit());
p.RCC.apb2pcenr.modify(|_,w| w.usart1en().set_bit());
p.GPIOD.cfglr.modify(|_, w| {
w.cnf5().variant(0b10) //TX - Output PushPull
.mode5().variant(0b11) //50 MHz
});
p.GPIOD.cfglr.modify(|_, w| {
w.cnf6().variant(0b01) //RX - Floating Input
.mode6().variant(0b00) //Input Mode
});
p.USART1.ctlr2.modify(|_,w| {
w.stop().variant(0b00)
});
p.USART1.ctlr1.modify(|_,w| {
w
.m().clear_bit()
.pce().clear_bit()
.te().set_bit()
.re().set_bit()
});
p.USART1.ctlr3.modify(|_,w| {
unsafe { w.bits(0x0000) }
});
p.USART1.ctlr1.modify(|_,w| {
w
.ue().set_bit()
});
//set boudrate
}
Loading…
Cancel
Save