#![no_main]
#![no_std]
use cortex_m_rt as rt;
use rt::entry;
use panic_rtt_target as _;
use rtt_target::rtt_init_print;
use cc2538_hal::sys_ctrl::*; use cc2538_pac as pac;
#[entry]
fn main() -> ! {
rtt_init_print!();
match inner_main() {
Ok(()) => cortex_m::peripheral::SCB::sys_reset(),
Err(e) => panic!("{}", e),
}
}
fn inner_main() -> Result<(), &'static str> {
let mut _core_periph = cortex_m::Peripherals::take().ok_or("unable to get core peripherals")?;
let periph = unsafe { pac::Peripherals::steal() };
let mut sys_ctrl = periph.sys_ctrl.constrain();
sys_ctrl.set_sys_div(ClockDiv::Clock16Mhz);
sys_ctrl.set_io_div(ClockDiv::Clock16Mhz);
sys_ctrl.enable_gpt0_in_active_mode();
sys_ctrl.enable_gpt0_in_sleep_mode();
sys_ctrl.enable_gpt0_in_deep_sleep_mode();
unsafe {
cortex_m::interrupt::enable();
}
loop {
cortex_m::asm::nop();
}
}