@@ -5,7 +5,7 @@ use crate::hal::digital::v2::{InputPin, OutputPin, StatefulOutputPin, Toggleable
5
5
use core:: convert:: Infallible ;
6
6
use core:: marker:: PhantomData ;
7
7
8
- use crate :: pac:: { self , EXTI , SYSCFG } ;
8
+ use crate :: pac:: { self , Interrupt , EXTI , SYSCFG } ;
9
9
use crate :: rcc:: { Enable , AHB2 , APB2 } ;
10
10
11
11
mod convert;
@@ -96,6 +96,7 @@ pub trait ExtiPin {
96
96
fn disable_interrupt ( & mut self , exti : & mut EXTI ) ;
97
97
fn clear_interrupt_pending_bit ( & mut self ) ;
98
98
fn check_interrupt ( & self ) -> bool ;
99
+ fn interrupt ( & self ) -> Interrupt ;
99
100
}
100
101
101
102
impl < PIN > ExtiPin for PIN
@@ -188,6 +189,20 @@ where
188
189
fn check_interrupt ( & self ) -> bool {
189
190
unsafe { ( ( * EXTI :: ptr ( ) ) . pr1 . read ( ) . bits ( ) & ( 1 << self . pin_id ( ) ) ) != 0 }
190
191
}
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
+ }
191
206
}
192
207
193
208
/// Opaque MODER register
0 commit comments