Expand description
A platform agnostic driver to interface with 7-segments displays connected to shift registers
This is work-in-progress!
Example
#![no_main]
#![no_std]
extern crate cortex_m;
extern crate cortex_m_rt;
extern crate nucleo_f401re as board;
extern crate panic_semihosting;
use cortex_m_rt::entry;
use board::hal::delay::Delay;
use board::hal::prelude::*;
use board::hal::stm32;
use board::spi::{self, Spi};
use cortex_m::peripheral::Peripherals;
use segment_display::SegmentDisplay;
#[entry]
fn main() -> ! {
let device = stm32::Peripherals::take().unwrap();
let core = Peripherals::take().unwrap();
let rcc = device.RCC.constrain();
let clocks = rcc.cfgr.sysclk(84.mhz()).freeze();
let gpiob = device.GPIOB.split();
let sck = gpiob.pb3.into_alternate_af5();
let miso = spi::NoMiso;
let mosi = gpiob.pb5.into_alternate_af5();
let latch = gpiob.pb4.into_push_pull_output();
let spi = Spi::spi1(
device.SPI1,
(sck, miso, mosi),
spi::Mode { polarity: spi::Polarity::IdleHigh, phase: spi::Phase::CaptureOnFirstTransition, },
4_000_000.hz(),
clocks,
);
let mut segment_display = SegmentDisplay::new(spi, latch);
let mut delay = Delay::new(core.SYST, clocks);
segment_display.write_str("HELO");
loop {
segment_display.refresh().unwrap();
delay.delay_us(1000_u16);
}
}