File tree Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,8 @@ use crate::{
66} ;
77
88pub 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
1820impl < 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
7585impl < TIM : Instance > embedded_hal:: Qei for Qei < TIM > {
Original file line number Diff line number Diff 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 }
You can’t perform that action at this time.
0 commit comments