Formatting and derive copy for counter config

This commit is contained in:
Zachary Levy
2026-04-09 20:53:14 -07:00
parent b3906b08e4
commit 52c2169e1c
+22 -10
View File
@@ -3,6 +3,7 @@
//! Counts edges on an external signal entirely in hardware. Supports three
//! pin sources per timer: the dedicated ETR pin, or any CH1/CH2 pin.
use embassy_stm32::Peri;
use embassy_stm32::gpio::{AfType, Flex, Pull};
use embassy_stm32::pac::timer::vals::{Etp, Etps};
use embassy_stm32::timer::low_level::{
@@ -11,7 +12,6 @@ use embassy_stm32::timer::low_level::{
use embassy_stm32::timer::{
Ch1, Ch2, Channel, ExternalTriggerPin, GeneralInstance4Channel, TimerPin,
};
use embassy_stm32::Peri;
/// Which edge increments the counter.
#[derive(Clone, Copy, Default, defmt::Format)]
@@ -25,7 +25,7 @@ pub enum CountEdge {
}
/// Pulse counter configuration.
#[derive(Clone)]
#[derive(Copy, Clone)]
pub struct PulseCounterConfig {
pub edge: CountEdge,
pub filter: FilterValue,
@@ -84,7 +84,10 @@ impl<'d, T: GeneralInstance4Channel> PulseCounter<'d, T> {
});
inner.start();
Self { inner, _pin: flex_pin }
Self {
inner,
_pin: flex_pin,
}
}
/// Count pulses on a CH1 pin.
@@ -101,7 +104,10 @@ impl<'d, T: GeneralInstance4Channel> PulseCounter<'d, T> {
Self::configure_channel(&inner, Channel::Ch1, TriggerSource::TI1FP1, &config);
inner.start();
Self { inner, _pin: flex_pin }
Self {
inner,
_pin: flex_pin,
}
}
/// Count pulses on a CH2 pin.
@@ -118,7 +124,10 @@ impl<'d, T: GeneralInstance4Channel> PulseCounter<'d, T> {
Self::configure_channel(&inner, Channel::Ch2, TriggerSource::TI2FP2, &config);
inner.start();
Self { inner, _pin: flex_pin }
Self {
inner,
_pin: flex_pin,
}
}
/// Common channel setup: put the channel in input mode, configure its
@@ -133,11 +142,14 @@ impl<'d, T: GeneralInstance4Channel> PulseCounter<'d, T> {
// Normal = direct mapping (TI1→IC1, TI2→IC2).
inner.set_input_ti_selection(channel, InputTISelection::Normal);
inner.set_input_capture_filter(channel, config.filter);
inner.set_input_capture_mode(channel, match config.edge {
CountEdge::Rising => InputCaptureMode::Rising,
CountEdge::Falling => InputCaptureMode::Falling,
CountEdge::Both => InputCaptureMode::BothEdges,
});
inner.set_input_capture_mode(
channel,
match config.edge {
CountEdge::Rising => InputCaptureMode::Rising,
CountEdge::Falling => InputCaptureMode::Falling,
CountEdge::Both => InputCaptureMode::BothEdges,
},
);
inner.set_trigger_source(trigger);
inner.set_slave_mode(SlaveMode::EXT_CLOCK_MODE);