2021-07-23 18:37:36 +10:00
|
|
|
#![no_std]
|
|
|
|
#![no_main]
|
|
|
|
|
|
|
|
use cortex_m_rt::entry;
|
|
|
|
use hal::pac;
|
|
|
|
use hal::sio::Sio;
|
|
|
|
use hd44780_driver as hd44780;
|
|
|
|
use panic_halt as _;
|
|
|
|
use rp2040_hal as hal;
|
|
|
|
|
|
|
|
#[link_section = ".boot2"]
|
|
|
|
#[used]
|
|
|
|
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER;
|
|
|
|
|
|
|
|
#[entry]
|
|
|
|
fn main() -> ! {
|
|
|
|
let mut pac = pac::Peripherals::take().unwrap();
|
|
|
|
let core = pac::CorePeripherals::take().unwrap();
|
|
|
|
|
|
|
|
// AHL bus speed default
|
|
|
|
let mut delay_provider = cortex_m::delay::Delay::new(core.SYST, 12_000_000);
|
|
|
|
|
|
|
|
let sio = Sio::new(pac.SIO);
|
|
|
|
let pins = hal::gpio::Pins::new(
|
|
|
|
pac.IO_BANK0,
|
|
|
|
pac.PADS_BANK0,
|
|
|
|
sio.gpio_bank0,
|
|
|
|
&mut pac.RESETS,
|
|
|
|
);
|
|
|
|
|
|
|
|
let lcd = hd44780::HD44780::new_4bit(
|
|
|
|
pins.gpio16.into_push_pull_output(), // Register Select
|
|
|
|
pins.gpio17.into_push_pull_output(), // Enable
|
|
|
|
pins.gpio18.into_push_pull_output(), // d4
|
|
|
|
pins.gpio19.into_push_pull_output(), // d5
|
|
|
|
pins.gpio20.into_push_pull_output(), // d6
|
|
|
|
pins.gpio21.into_push_pull_output(), // d7
|
|
|
|
&mut delay_provider,
|
|
|
|
);
|
|
|
|
|
|
|
|
let mut lcd = lcd.unwrap();
|
|
|
|
|
|
|
|
lcd.reset(&mut delay_provider).unwrap();
|
|
|
|
lcd.clear(&mut delay_provider).unwrap();
|
|
|
|
lcd.write_str("rp-hal on", &mut delay_provider).unwrap();
|
|
|
|
lcd.set_cursor_pos(40, &mut delay_provider).unwrap();
|
|
|
|
lcd.set_cursor_visibility(hd44780::Cursor::Visible, &mut delay_provider)
|
|
|
|
.unwrap();
|
|
|
|
lcd.write_str("HD44780!", &mut delay_provider).unwrap();
|
|
|
|
|
2021-07-26 19:48:11 +10:00
|
|
|
#[allow(clippy::empty_loop)]
|
2021-07-23 18:37:36 +10:00
|
|
|
loop {}
|
|
|
|
}
|