我是 Rust 的新手。目前我正在使用 STM32F303 Discovery 板进行嵌入式 rust。我在访问寄存器时遇到了很多问题,不知道如何访问 RCC、FLASH、TIMER 等以完成任务。谁能帮帮我。您可以查看我卡住的代码。
//! Initialization code
#![no_std]
#[allow(unused_extern_crates)] // NOTE(allow) bug rust-lang/rust53964
extern crate panic_itm; // panic handler
pub use cortex_m::{asm::bkpt, iprint, iprintln, peripheral::ITM};
pub use cortex_m_rt::entry;
pub use f3::hal::{prelude, serial::Serial, stm32f30x::usart1, time::MonoTimer};
use f3::hal::{
prelude::*,
stm32f30x::{self, USART1},
};
pub fn init() -> (&'static mut usart1::RegisterBlock, MonoTimer, ITM) {
let cp = cortex_m::Peripherals::take().unwrap();
let dp = stm32f30x::Peripherals::take().unwrap();
let mut flash = dp.FLASH.constrain();
let mut rcc = dp.RCC.constrain();
let clocks = rcc.cfgr.freeze(&mut flash.acr);
let mut gpioa = dp.GPIOA.split(&mut rcc.ahb);
let tx = gpioa.pa9.into_af7(&mut gpioa.moder, &mut gpioa.afrh);
let rx = gpioa.pa10.into_af7(&mut gpioa.moder, &mut gpioa.afrh);
Serial::usart1(dp.USART1, (tx, rx), 115_200.bps(), clocks, &mut rcc.apb2);
// If you are having trouble sending/receiving data to/from the
// HC-05 bluetooth module, try this configuration instead:
// Serial::usart1(dp.USART1, (tx, rx), 9600.bps(), clocks, &mut rcc.apb2);
unsafe {
(
&mut *(USART1::ptr() as *mut _),
MonoTimer::new(cp.DWT, clocks),
cp.ITM,
)
}
}