pub struct Hub75Config {
pub frequency: Rate,
pub interrupt_priority: Option<Priority>,
}Expand description
Configuration for creating a Hub75 instance.
Passed to Hub75::new and
Hub75::new_async instead of a bare frequency.
Hub75Config::new (and [Default]) start from a 10 MHz pixel clock and
the peripheral’s default interrupt priority; override either with the
with_frequency and
with_interrupt_priority builders.
The theoretical refresh rate for a given framebuffer type and pixel clock
can be computed at compile time with refresh_hz.
Fields§
§frequency: RateThe HUB75 pixel-clock frequency.
interrupt_priority: Option<Priority>Interrupt priority for the HUB75 refresh ISR.
None (the default) leaves the ISR at esp-hal’s default interrupt
priority (Priority::min()). Raising it lets the refresh ISR preempt
lower-priority interrupt handlers, which is the main practical
anti-flicker lever on multi-core chips:
- ESP32: Wi-Fi and other long-running interrupt handlers run at low
priority and can delay the refresh ISR by hundreds of microseconds,
causing visible flicker. Set the priority to
Priority::Priority3(the maximum) and enable theiramfeature to keep the ISR resident in instruction RAM. - ESP32-S3: same treatment, especially when Wi-Fi is active.
- Single-core RISC-V chips (C5/C6): interrupt priority control is more fine-grained there; raising the priority mainly protects the refresh ISR against other same-core interrupt handlers.
Note that a higher ISR priority increases the latency of everything it preempts — including Wi-Fi bookkeeping — so use the lowest value that eliminates flicker.
Implementations§
Source§impl Hub75Config
impl Hub75Config
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Creates a new configuration with the default 10 MHz pixel clock.
Use with_frequency to override the
pixel clock, and
with_interrupt_priority to
raise the refresh ISR priority.
Sourcepub const fn with_frequency(self, frequency: Rate) -> Self
pub const fn with_frequency(self, frequency: Rate) -> Self
Sets the HUB75 pixel-clock frequency.
Sourcepub const fn with_interrupt_priority(self, priority: Priority) -> Self
pub const fn with_interrupt_priority(self, priority: Priority) -> Self
Sets the interrupt priority of the HUB75 refresh ISR.
See Hub75Config::interrupt_priority for guidance.
Trait Implementations§
Source§impl Clone for Hub75Config
impl Clone for Hub75Config
Source§fn clone(&self) -> Hub75Config
fn clone(&self) -> Hub75Config
1.0.0 (const: unstable)§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Hub75Config
Source§impl Debug for Hub75Config
impl Debug for Hub75Config
Auto Trait Implementations§
impl Freeze for Hub75Config
impl RefUnwindSafe for Hub75Config
impl Send for Hub75Config
impl Sync for Hub75Config
impl Unpin for Hub75Config
impl UnsafeUnpin for Hub75Config
impl UnwindSafe for Hub75Config
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)