#![no_std]
#![no_main]
#![feature(type_alias_impl_trait)]
use core::arch::{asm, global_asm};
use core::fmt::Write;
use core::writeln;
use embassy_executor::Spawner;
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embassy_sync::channel::Channel;
use embassy_time::Timer;
use embedded_hal_1::delay::DelayNs;
use hal::gpio::{AnyPin, Input, Level, Output, OutputDrive, Pin, 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};
use {ch58x_hal as hal, panic_halt as _};
static mut CHAR: [u8; 11] = [0; 11];
#[embassy_executor::task]
async fn dot_matrix_7x11(mut cols: [Output<'static, AnyPin>; 7], mut rows: [Output<'static, AnyPin>; 11]) {
loop {
let ch = unsafe { CHAR };
for r in 0..11 {
if r > 0 {
rows[r - 1].set_low();
} else {
rows.last_mut().unwrap().set_low();
}
let byte = ch[r];
for c in 0..7 {
if byte & (1 << c) != 0 {
cols[c].set_low();
} else {
cols[c].set_high();
}
}
rows[r].set_high();
Timer::after_micros(100).await;
}
}
}
#[embassy_executor::main(entry = "qingke_rt::entry")]
async fn main(spawner: Spawner) -> ! {
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);
hal::embassy::init();
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();
unsafe {
hal::set_default_serial(uart);
}
let mut led = Output::new(p.PB18, Level::Low, OutputDrive::_5mA);
let mut cols = [
Output::new(p.PB0.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB1.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB2.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB3.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB4.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB5.degrade(), Level::High, OutputDrive::_5mA),
Output::new(p.PB6.degrade(), Level::High, OutputDrive::_5mA),
];
let mut rows = [
Output::new(p.PA4.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA5.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA6.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA0.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA1.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA2.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA3.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA15.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA14.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA13.degrade(), Level::Low, OutputDrive::_5mA),
Output::new(p.PA12.degrade(), Level::Low, OutputDrive::_5mA),
];
spawner.spawn(dot_matrix_7x11(cols, rows)).unwrap();
let mut rtc = Rtc;
const FONT1: &[[u8; 11]] = &[
[0x1C, 0x36, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1C],
[0x18, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E],
[0x3E, 0x63, 0x63, 0x63, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x63, 0x7F],
[0x3E, 0x63, 0x63, 0x06, 0x1C, 0x06, 0x03, 0x03, 0x63, 0x66, 0x3C],
[0x06, 0x0E, 0x1E, 0x36, 0x36, 0x66, 0x66, 0x7F, 0x06, 0x06, 0x1F],
[0x7F, 0x60, 0x60, 0x60, 0x7C, 0x76, 0x03, 0x03, 0x63, 0x66, 0x3C],
[0x1E, 0x36, 0x60, 0x60, 0x7C, 0x76, 0x63, 0x63, 0x63, 0x36, 0x1C],
[0x7F, 0x66, 0x66, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18],
[0x3E, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x3E],
[0x1C, 0x36, 0x63, 0x63, 0x63, 0x37, 0x1F, 0x03, 0x03, 0x36, 0x3C],
];
const FONT: &[[u8; 11]] = &[
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08], [0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x48, 0x48, 0x24, 0x7f, 0x24, 0x24, 0x12, 0x7f, 0x12, 0x09, 0x09], [0x08, 0x3e, 0x49, 0x09, 0x09, 0x3e, 0x48, 0x48, 0x49, 0x3e, 0x08], [0x47, 0x25, 0x27, 0x10, 0x10, 0x08, 0x08, 0x04, 0x72, 0x52, 0x71], [0x06, 0x09, 0x09, 0x09, 0x26, 0x22, 0x25, 0x29, 0x11, 0x29, 0x46], [0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x08], [0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x04], [0x00, 0x08, 0x2a, 0x1c, 0x2a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04], [0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18], [0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02], [0x1c, 0x22, 0x51, 0x51, 0x49, 0x49, 0x49, 0x45, 0x45, 0x22, 0x1c], [0x08, 0x0c, 0x0a, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e], [0x1e, 0x21, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x7f], [0x1f, 0x20, 0x40, 0x40, 0x20, 0x1e, 0x20, 0x40, 0x40, 0x20, 0x1f], [0x30, 0x28, 0x24, 0x22, 0x21, 0x7f, 0x20, 0x20, 0x20, 0x20, 0x20], [0x7f, 0x01, 0x01, 0x01, 0x1f, 0x20, 0x40, 0x40, 0x40, 0x20, 0x1f], [0x38, 0x04, 0x02, 0x01, 0x1d, 0x23, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x7f, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02], [0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c], [0x1c, 0x22, 0x41, 0x41, 0x41, 0x62, 0x5c, 0x40, 0x20, 0x10, 0x0e], [0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00], [0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x08, 0x04], [0x00, 0x40, 0x30, 0x0c, 0x02, 0x01, 0x02, 0x0c, 0x30, 0x40, 0x00], [0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00], [0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x20, 0x18, 0x06, 0x01, 0x00], [0x3e, 0x41, 0x40, 0x40, 0x30, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08], [0x1c, 0x22, 0x41, 0x49, 0x55, 0x55, 0x55, 0x39, 0x01, 0x02, 0x3c], [0x08, 0x14, 0x14, 0x22, 0x22, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41], [0x1f, 0x21, 0x21, 0x21, 0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f], [0x3c, 0x42, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42, 0x3c], [0x1f, 0x22, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x22, 0x1f], [0x7f, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f], [0x7f, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x3c, 0x42, 0x01, 0x01, 0x01, 0x79, 0x41, 0x41, 0x41, 0x42, 0x3c], [0x41, 0x41, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x1c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1c], [0x1e, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0e], [0x21, 0x11, 0x09, 0x05, 0x03, 0x03, 0x05, 0x09, 0x11, 0x21, 0x41], [0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f], [0x41, 0x63, 0x55, 0x55, 0x49, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41], [0x41, 0x41, 0x41, 0x43, 0x43, 0x45, 0x49, 0x51, 0x51, 0x61, 0x41], [0x1c, 0x22, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f, 0x01, 0x01, 0x01, 0x01], [0x1c, 0x22, 0x41, 0x41, 0x41, 0x41, 0x41, 0x49, 0x51, 0x22, 0x5c], [0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f, 0x09, 0x11, 0x21, 0x41], [0x1c, 0x22, 0x41, 0x01, 0x02, 0x1c, 0x20, 0x40, 0x41, 0x22, 0x1c], [0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x41, 0x41, 0x22, 0x22, 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08], [0x41, 0x41, 0x41, 0x41, 0x49, 0x49, 0x49, 0x55, 0x55, 0x63, 0x41], [0x41, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x14, 0x22, 0x22, 0x41], [0x41, 0x41, 0x22, 0x14, 0x14, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x7f, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x7f], [0x1c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1c], [0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10], [0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e], [0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f], [0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x3e, 0x41, 0x40, 0x7e, 0x41, 0x41, 0x61, 0x5e], [0x01, 0x01, 0x01, 0x1d, 0x23, 0x41, 0x41, 0x41, 0x41, 0x23, 0x1d], [0x00, 0x00, 0x00, 0x3c, 0x42, 0x01, 0x01, 0x01, 0x01, 0x42, 0x3c], [0x40, 0x40, 0x40, 0x5c, 0x62, 0x41, 0x41, 0x41, 0x41, 0x62, 0x5c], [0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x7f, 0x01, 0x01, 0x42, 0x3c], [0x1c, 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04], [0x00, 0x00, 0x00, 0x5e, 0x61, 0x41, 0x61, 0x5e, 0x40, 0x21, 0x1e], [0x01, 0x01, 0x01, 0x3d, 0x43, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x00, 0x10, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x12, 0x0c], [0x01, 0x01, 0x01, 0x21, 0x11, 0x09, 0x07, 0x09, 0x11, 0x21, 0x41], [0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0c], [0x00, 0x00, 0x00, 0x25, 0x5b, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49], [0x00, 0x00, 0x00, 0x1d, 0x23, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x00, 0x00, 0x00, 0x1f, 0x21, 0x41, 0x41, 0x21, 0x1f, 0x01, 0x01], [0x00, 0x00, 0x00, 0x2c, 0x32, 0x21, 0x21, 0x21, 0x32, 0x2c, 0x20], [0x00, 0x00, 0x00, 0x3d, 0x43, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x00, 0x00, 0x00, 0x3e, 0x41, 0x01, 0x0e, 0x30, 0x40, 0x41, 0x3e], [0x00, 0x04, 0x04, 0x3e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x38], [0x00, 0x00, 0x00, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31, 0x2e], [0x00, 0x00, 0x00, 0x41, 0x41, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08], [0x00, 0x00, 0x00, 0x41, 0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x36], [0x00, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x08, 0x14, 0x22, 0x41], [0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x24, 0x38, 0x10, 0x08, 0x06], [0x00, 0x00, 0x00, 0x7f, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x7f], [0x18, 0x08, 0x08, 0x08, 0x04, 0x06, 0x04, 0x08, 0x08, 0x08, 0x18], [0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x0c, 0x08, 0x08, 0x08, 0x10, 0x30, 0x10, 0x08, 0x08, 0x08, 0x0c], [0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x51, 0x20, 0x00, 0x00, 0x00], [0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x55, 0x49, 0x42, 0x22, 0x24, 0x24, 0x18, 0x10, 0x08, 0x04, 0x03], [0x00, 0x14, 0x08, 0x41, 0x41, 0x42, 0x24, 0x38, 0x10, 0x08, 0x06], [0x1e, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0e], [0x00, 0x00, 0x00, 0x21, 0x1e, 0x12, 0x12, 0x1e, 0x21, 0x00, 0x00], [0x40, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08], [0x10, 0x08, 0x04, 0x08, 0x14, 0x22, 0x14, 0x08, 0x10, 0x08, 0x04], [0x14, 0x7f, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x7f], [0x1c, 0x22, 0x41, 0x5d, 0x45, 0x45, 0x45, 0x5d, 0x41, 0x22, 0x1c], [0x3c, 0x42, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x42, 0x3c], [0x00, 0x00, 0x00, 0x48, 0x24, 0x12, 0x09, 0x12, 0x24, 0x48, 0x00], [0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00], [0x3e, 0x41, 0x41, 0x5d, 0x55, 0x4d, 0x55, 0x55, 0x41, 0x41, 0x3e], [0x14, 0x00, 0x1c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1c], [0x00, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x3e, 0x00, 0x00], [0x1c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1c], [0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x00, 0x00, 0x20, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22, 0x5e, 0x02, 0x01], [0x00, 0x7e, 0x27, 0x26, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24], [0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x12, 0x00, 0x1c, 0x22, 0x41, 0x7f, 0x01, 0x01, 0x22, 0x1c], [0x70, 0x50, 0x70, 0x00, 0x43, 0x45, 0x49, 0x51, 0x61, 0x41, 0x41], [0x00, 0x00, 0x00, 0x3c, 0x42, 0x01, 0x1f, 0x01, 0x01, 0x42, 0x3c], [0x00, 0x00, 0x00, 0x09, 0x12, 0x24, 0x48, 0x24, 0x12, 0x09, 0x00], [0x00, 0x10, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x12, 0x0c], [0x1c, 0x22, 0x41, 0x01, 0x02, 0x1c, 0x20, 0x40, 0x41, 0x22, 0x1c], [0x00, 0x00, 0x00, 0x3e, 0x41, 0x01, 0x0e, 0x30, 0x40, 0x41, 0x3e], [0x00, 0x14, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x08, 0x14, 0x14, 0x22, 0x22, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41], [0x7f, 0x01, 0x01, 0x01, 0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f], [0x1f, 0x21, 0x21, 0x21, 0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f], [0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x7f], [0x7f, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f], [0x49, 0x49, 0x49, 0x2a, 0x1c, 0x1c, 0x2a, 0x2a, 0x49, 0x49, 0x49], [0x1e, 0x21, 0x40, 0x40, 0x20, 0x1e, 0x20, 0x40, 0x40, 0x21, 0x1e], [0x41, 0x61, 0x51, 0x51, 0x49, 0x45, 0x45, 0x43, 0x41, 0x41, 0x41], [0x4d, 0x61, 0x51, 0x51, 0x49, 0x45, 0x45, 0x43, 0x41, 0x41, 0x41], [0x61, 0x11, 0x09, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11, 0x21, 0x41], [0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x41], [0x41, 0x63, 0x55, 0x55, 0x49, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41], [0x41, 0x41, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x1c, 0x22, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f, 0x01, 0x01, 0x01, 0x01], [0x3c, 0x42, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42, 0x3c], [0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x41, 0x41, 0x42, 0x22, 0x24, 0x24, 0x18, 0x10, 0x08, 0x04, 0x03], [0x08, 0x1c, 0x2a, 0x49, 0x49, 0x49, 0x49, 0x49, 0x2a, 0x1c, 0x08], [0x41, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x14, 0x22, 0x22, 0x41], [0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x40], [0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7e, 0x40, 0x40, 0x40, 0x40], [0x41, 0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x7f], [0x41, 0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x7f, 0x40], [0x03, 0x02, 0x02, 0x02, 0x1e, 0x22, 0x42, 0x42, 0x42, 0x22, 0x1e], [0x41, 0x41, 0x41, 0x41, 0x47, 0x49, 0x51, 0x51, 0x51, 0x49, 0x47], [0x01, 0x01, 0x01, 0x01, 0x1f, 0x21, 0x41, 0x41, 0x41, 0x21, 0x1f], [0x0f, 0x30, 0x20, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x20, 0x30, 0x0f], [0x11, 0x29, 0x45, 0x45, 0x45, 0x47, 0x45, 0x45, 0x45, 0x29, 0x11], [0x7c, 0x42, 0x41, 0x41, 0x41, 0x42, 0x7c, 0x48, 0x44, 0x42, 0x41], [0x00, 0x00, 0x00, 0x3e, 0x41, 0x40, 0x7e, 0x41, 0x41, 0x61, 0x5e], [0x1c, 0x02, 0x01, 0x1d, 0x23, 0x41, 0x41, 0x41, 0x41, 0x23, 0x1d], [0x00, 0x00, 0x00, 0x1f, 0x21, 0x21, 0x1f, 0x21, 0x21, 0x21, 0x1f], [0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], [0x00, 0x00, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x21, 0x21, 0x21, 0x7f], [0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x7f, 0x01, 0x01, 0x42, 0x3c], [0x00, 0x00, 0x00, 0x49, 0x49, 0x2a, 0x1c, 0x2a, 0x49, 0x49, 0x49], [0x00, 0x00, 0x00, 0x3e, 0x41, 0x40, 0x3c, 0x40, 0x40, 0x41, 0x3e], [0x00, 0x00, 0x00, 0x21, 0x21, 0x31, 0x29, 0x25, 0x25, 0x23, 0x21], [0x00, 0x00, 0x00, 0x2d, 0x21, 0x31, 0x29, 0x25, 0x25, 0x23, 0x21], [0x00, 0x00, 0x00, 0x61, 0x11, 0x09, 0x07, 0x09, 0x11, 0x21, 0x41], [0x00, 0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x41], [0x00, 0x00, 0x00, 0x41, 0x63, 0x55, 0x49, 0x41, 0x41, 0x41, 0x41], [0x00, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41, 0x41], [0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x41, 0x41, 0x41, 0x22, 0x1c], [0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41], [0x00, 0x00, 0x00, 0x1d, 0x23, 0x41, 0x41, 0x23, 0x1d, 0x01, 0x01], [0x00, 0x00, 0x00, 0x3c, 0x42, 0x01, 0x01, 0x01, 0x01, 0x42, 0x3c], [0x00, 0x00, 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08], [0x00, 0x00, 0x00, 0x41, 0x41, 0x42, 0x24, 0x38, 0x10, 0x08, 0x06], [0x00, 0x00, 0x00, 0x08, 0x1c, 0x2a, 0x49, 0x49, 0x2a, 0x1c, 0x08], [0x00, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x08, 0x14, 0x22, 0x41], [0x00, 0x00, 0x00, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3e, 0x40], [0x00, 0x00, 0x00, 0x41, 0x41, 0x41, 0x41, 0x7e, 0x40, 0x40, 0x40], [0x00, 0x00, 0x00, 0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x49, 0x7f], [0x00, 0x00, 0x00, 0x41, 0x41, 0x49, 0x49, 0x49, 0x49, 0x7f, 0x40], [0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x3e, 0x42, 0x42, 0x42, 0x3e], [0x00, 0x00, 0x00, 0x41, 0x41, 0x41, 0x4f, 0x51, 0x51, 0x51, 0x4f], [0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x3f, 0x41, 0x41, 0x41, 0x3f], [0x00, 0x00, 0x00, 0x1e, 0x21, 0x40, 0x7c, 0x40, 0x40, 0x21, 0x1e], [0x00, 0x00, 0x00, 0x11, 0x29, 0x45, 0x47, 0x47, 0x45, 0x29, 0x11], [0x00, 0x00, 0x00, 0x7e, 0x41, 0x41, 0x41, 0x7e, 0x48, 0x44, 0x42], ];
loop {
for i in 0..FONT1.len() {
unsafe {
CHAR = FONT1[i];
}
Timer::after_millis(1000).await;
}
}
loop {}
}