#![no_std]
#![no_main]
use core::arch::{asm, global_asm};
use core::fmt::Write;
use core::writeln;
use ch58x_hal as hal;
use embedded_hal_1::delay::DelayNs;
use hal::delay::CycleDelay;
use hal::gpio::{AnyPin, Input, Level, Output, OutputDrive, Pull};
use hal::interrupt::Interrupt;
use hal::isp::EEPROM_BLOCK_SIZE;
use hal::rtc::{DateTime, Rtc};
use hal::sysctl::Config;
use hal::uart::UartTx;
use hal::{pac, peripherals, println, Peripherals};
#[qingke_rt::entry]
fn main() -> ! {
let mut config = hal::Config::default();
config.clock.use_pll_60mhz().enable_lse();
config.enable_dcdc = true;
config.low_power = true;
config.clock.enable_lse();
let p = hal::init(config);
let mut delay = CycleDelay;
let mut led = Output::new(p.PB18, Level::Low, OutputDrive::_5mA);
let mut download_button = Input::new(p.PB22, Pull::Up);
let mut reset_button = Input::new(p.PB23, Pull::Up);
let mut uart = UartTx::new(p.UART1, p.PA9, Default::default()).unwrap();
writeln!(uart, "\n\n\nHello World!").unwrap();
writeln!(uart, "Clocks: {}", hal::sysctl::clocks().hclk).unwrap();
writeln!(uart, "ChipID: {:02x}", hal::signature::get_chip_id());
unsafe {
hal::set_default_serial(uart);
}
let mut rtc = hal::rtc::Rtc;
loop {
unsafe {
led.toggle();
delay.delay_ms(1000);
println!("time {}", rtc.now());
}
}
}
#[panic_handler]
fn panic(info: &core::panic::PanicInfo) -> ! {
use core::fmt::Write;
let pa9 = unsafe { peripherals::PA9::steal() };
let uart1 = unsafe { peripherals::UART1::steal() };
let mut serial = UartTx::new(uart1, pa9, Default::default()).unwrap();
let _ = writeln!(&mut serial, "\n\n\n{}", info);
loop {}
}