Skip to content

Commit 2515a4c

Browse files
committed
add .write_count() for TIM, add .set_count() for Qei
1 parent a22d803 commit 2515a4c

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/qei.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use crate::{
66
};
77

88
pub trait QeiExt: Sized + Instance {
9+
type Count;
10+
911
fn qei(
1012
self,
1113
pins: (
@@ -16,6 +18,8 @@ pub trait QeiExt: Sized + Instance {
1618
}
1719

1820
impl<TIM: Instance> QeiExt for TIM {
21+
type Count = TIM::Width;
22+
1923
fn qei(
2024
self,
2125
pins: (
@@ -70,6 +74,12 @@ impl<TIM: Instance> Qei<TIM> {
7074
) {
7175
(self.tim, self.pins)
7276
}
77+
78+
/// Set current count number
79+
pub fn set_count(&mut self, value: TIM::Width) -> &mut Self {
80+
self.tim.write_count(value);
81+
self
82+
}
7383
}
7484

7585
impl<TIM: Instance> embedded_hal::Qei for Qei<TIM> {

src/timer.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ mod sealed {
273273
fn listen_interrupt(&mut self, event: Event, b: bool);
274274
fn get_interrupt_flag(&self) -> Event;
275275
fn read_count(&self) -> Self::Width;
276+
fn write_count(&mut self, value: Self::Width);
276277
fn start_one_pulse(&mut self);
277278
fn start_free(&mut self, update: bool);
278279
fn cr1_reset(&mut self);
@@ -405,6 +406,12 @@ macro_rules! hal {
405406
self.cnt.read().bits() as Self::Width
406407
}
407408
#[inline(always)]
409+
fn write_count(&mut self, value:Self::Width) {
410+
//TODO: remove "unsafe" when possible
411+
#[allow(unused_unsafe)]
412+
self.cnt.write(|w|unsafe{w.cnt().bits(value)});
413+
}
414+
#[inline(always)]
408415
fn start_one_pulse(&mut self) {
409416
self.cr1.modify(|_, w| unsafe { w.bits(1 << 3) }.cen().set_bit());
410417
}

0 commit comments

Comments
 (0)