59 lines
1.4 KiB
Rust
59 lines
1.4 KiB
Rust
#![no_main]
|
|
#![no_std]
|
|
|
|
use panic_halt as _;
|
|
use cortex_m_rt::entry;
|
|
use stm32f4xx_hal::{
|
|
watchdog::IndependentWatchdog,
|
|
rcc::RccExt,
|
|
pac::{CorePeripherals, Peripherals},
|
|
time::MegaHertz, prelude::_stm32f4xx_hal_gpio_GpioExt,
|
|
};
|
|
use log::info;
|
|
use fugit::ExtU32;
|
|
mod device;
|
|
use device::log::init_log;
|
|
// use setup::init_gpio::Pins;
|
|
|
|
use device::timer;
|
|
|
|
#[cfg(not(feature = "semihosting"))]
|
|
const WATCHDOG_PERIOD: u32 = 1000;
|
|
#[cfg(feature = "semihosting")]
|
|
const WATCHDOG_PERIOD: u32 = 30000;
|
|
|
|
#[entry]
|
|
fn main() -> ! {
|
|
init_log();
|
|
info!("Kirdy init");
|
|
|
|
let mut core_perif = CorePeripherals::take().unwrap();
|
|
core_perif.SCB.enable_icache();
|
|
core_perif.SCB.enable_dcache(&mut core_perif.CPUID);
|
|
|
|
let perif = Peripherals::take().unwrap();
|
|
let clocks = perif.RCC.constrain()
|
|
.cfgr
|
|
.use_hse(MegaHertz::from_raw(8).convert())
|
|
.sysclk(MegaHertz::from_raw(168).convert())
|
|
.hclk(MegaHertz::from_raw(168).convert())
|
|
.pclk1(MegaHertz::from_raw(32).convert())
|
|
.pclk2(MegaHertz::from_raw(64).convert())
|
|
.freeze();
|
|
|
|
let mut wd = IndependentWatchdog::new(perif.IWDG);
|
|
wd.start(WATCHDOG_PERIOD.millis());
|
|
wd.feed();
|
|
|
|
timer::setup(core_perif.SYST, clocks);
|
|
|
|
let gpioc = perif.GPIOC.split();
|
|
let mut pc9 = gpioc.pc9.into_push_pull_output();
|
|
|
|
loop {
|
|
pc9.toggle();
|
|
timer::sleep(1);
|
|
wd.feed();
|
|
}
|
|
|
|
} |