@@ -5,7 +5,7 @@ use crate::hal::digital::v2::{InputPin, OutputPin, StatefulOutputPin, Toggleable
55use core:: convert:: Infallible ;
66use core:: marker:: PhantomData ;
77
8- use crate :: pac:: { self , EXTI , SYSCFG } ;
8+ use crate :: pac:: { self , Interrupt , EXTI , SYSCFG } ;
99use crate :: rcc:: { Enable , AHB2 , APB2 } ;
1010
1111mod convert;
@@ -96,6 +96,7 @@ pub trait ExtiPin {
9696 fn disable_interrupt ( & mut self , exti : & mut EXTI ) ;
9797 fn clear_interrupt_pending_bit ( & mut self ) ;
9898 fn check_interrupt ( & self ) -> bool ;
99+ fn interrupt ( & self ) -> Interrupt ;
99100}
100101
101102impl < PIN > ExtiPin for PIN
@@ -188,6 +189,20 @@ where
188189 fn check_interrupt ( & self ) -> bool {
189190 unsafe { ( ( * EXTI :: ptr ( ) ) . pr1 . read ( ) . bits ( ) & ( 1 << self . pin_id ( ) ) ) != 0 }
190191 }
192+
193+ /// Get the `Interrupt` for this pin.
194+ fn interrupt ( & self ) -> Interrupt {
195+ match self . pin_id ( ) {
196+ 0 => Interrupt :: EXTI0 ,
197+ 1 => Interrupt :: EXTI1 ,
198+ 2 => Interrupt :: EXTI2 ,
199+ 3 => Interrupt :: EXTI3 ,
200+ 4 => Interrupt :: EXTI4 ,
201+ 5 ..=9 => Interrupt :: EXTI9_5 ,
202+ 10 ..=15 => Interrupt :: EXTI15_10 ,
203+ _ => unreachable ! ( ) ,
204+ }
205+ }
191206}
192207
193208/// Opaque MODER register
0 commit comments