1 个不稳定版本

0.1.0 2019年3月29日

#1534硬件支持

每月 23 次下载
用于 nucleo-f401re

MIT/Apache

11KB
139 代码行

segment-display

这是一个简单七段显示屏的驱动库。

这个库是为了一个由 "Qifei" 标记的、序列号为 "3641BS" 的七段模块创建的。PCB上装有两个74HC595移位寄存器,然后将它们连接到4个七段显示屏。

这些PCB的优点是只需要3个引脚(时钟、数据、锁存)来控制。另一个优点是您可以使用SPI控制器进行此通信。缺点是数字都是复用的,因此您必须循环通过它们,快速地逐个更新每个数字,以欺骗眼睛。

目前这个库是为这个特定的PCB和设置定制的,但修改它以支持其他配置应该不会太难。

以下提供了一个如何使用此驱动程序的简单示例,还有两个其他示例在我的 nucleo-f401re 库中可用。基于RTFM的一个特别不错,因为它在RTFM计划的任务中执行刷新。

#![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);
   }
}

依赖关系

~71KB