forked from M-Labs/kirdy
refactor, shorten main
This commit is contained in:
parent
fc90593f84
commit
18a603ab5f
|
@ -0,0 +1,52 @@
|
||||||
|
use stm32f4xx_hal::{
|
||||||
|
watchdog::IndependentWatchdog,
|
||||||
|
rcc::RccExt,
|
||||||
|
pac::{CorePeripherals, Peripherals},
|
||||||
|
time::MegaHertz, prelude::_stm32f4xx_hal_gpio_GpioExt,
|
||||||
|
};
|
||||||
|
use fugit::ExtU32;
|
||||||
|
use log::info;
|
||||||
|
use super::{log_setup, sys_timer, usb};
|
||||||
|
|
||||||
|
#[cfg(not(feature = "semihosting"))]
|
||||||
|
const WATCHDOG_PERIOD: u32 = 1000;
|
||||||
|
#[cfg(feature = "semihosting")]
|
||||||
|
const WATCHDOG_PERIOD: u32 = 30000;
|
||||||
|
|
||||||
|
pub fn bootup (mut core_perif : CorePeripherals, perif : Peripherals) -> (
|
||||||
|
IndependentWatchdog
|
||||||
|
) {
|
||||||
|
|
||||||
|
log_setup::init_log();
|
||||||
|
info!("Kirdy init");
|
||||||
|
|
||||||
|
core_perif.SCB.enable_icache();
|
||||||
|
core_perif.SCB.enable_dcache(&mut core_perif.CPUID);
|
||||||
|
|
||||||
|
|
||||||
|
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 (pins, eth_pins, usb) = Pins::setup(
|
||||||
|
// clocks, perif.TIM4,
|
||||||
|
// perif.GPIOA, perif.GPIOB, perif.GPIOC, perif.GPIOD, perif.GPIOE, perif.GPIOF, perif.GPIOG,
|
||||||
|
// perif.SPI1, perif.SPI2, perif.SPI3,
|
||||||
|
// perif.ADC1,
|
||||||
|
// perif.OTG_FS_GLOBAL, perif.OTG_FS_DEVICE, perif.OTG_FS_PWRCLK,
|
||||||
|
// );
|
||||||
|
|
||||||
|
let mut wd = IndependentWatchdog::new(perif.IWDG);
|
||||||
|
wd.start(WATCHDOG_PERIOD.millis());
|
||||||
|
wd.feed();
|
||||||
|
|
||||||
|
sys_timer::setup(core_perif.SYST, clocks);
|
||||||
|
|
||||||
|
(wd)
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
pub mod log;
|
pub mod log_setup;
|
||||||
pub mod usb;
|
pub mod usb;
|
||||||
pub mod timer;
|
pub mod sys_timer;
|
||||||
|
pub mod boot;
|
||||||
// pub mod init_gpio;
|
// pub mod init_gpio;
|
38
src/main.rs
38
src/main.rs
|
@ -10,50 +10,22 @@ use stm32f4xx_hal::{
|
||||||
time::MegaHertz, prelude::_stm32f4xx_hal_gpio_GpioExt,
|
time::MegaHertz, prelude::_stm32f4xx_hal_gpio_GpioExt,
|
||||||
};
|
};
|
||||||
use log::info;
|
use log::info;
|
||||||
use fugit::ExtU32;
|
|
||||||
mod device;
|
mod device;
|
||||||
use device::log::init_log;
|
use device::boot::bootup;
|
||||||
// use setup::init_gpio::Pins;
|
use device::sys_timer;
|
||||||
|
|
||||||
use device::timer;
|
|
||||||
|
|
||||||
#[cfg(not(feature = "semihosting"))]
|
|
||||||
const WATCHDOG_PERIOD: u32 = 1000;
|
|
||||||
#[cfg(feature = "semihosting")]
|
|
||||||
const WATCHDOG_PERIOD: u32 = 30000;
|
|
||||||
|
|
||||||
#[entry]
|
#[entry]
|
||||||
fn main() -> ! {
|
fn main() -> ! {
|
||||||
init_log();
|
|
||||||
info!("Kirdy init");
|
|
||||||
|
|
||||||
let mut core_perif = CorePeripherals::take().unwrap();
|
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 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 wd) = bootup(core_perif, perif);
|
||||||
let mut pc9 = gpioc.pc9.into_push_pull_output();
|
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
pc9.toggle();
|
|
||||||
timer::sleep(1);
|
|
||||||
wd.feed();
|
wd.feed();
|
||||||
|
info!("looping");
|
||||||
|
sys_timer::sleep(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue