Skip to content

Commit 5dcdf0a

Browse files
committed
fix ExtiPin
1 parent b468652 commit 5dcdf0a

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

examples/exti.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ fn EXTI9_5() {
4040
#[entry]
4141
fn main() -> ! {
4242
// initialization phase
43-
let p = pac::Peripherals::take().unwrap();
43+
let mut p = pac::Peripherals::take().unwrap();
4444
let _cp = cortex_m::peripheral::Peripherals::take().unwrap();
4545
{
4646
// the scope ensures that the int_pin reference is dropped before the first ISR can be executed.
@@ -55,8 +55,8 @@ fn main() -> ! {
5555
let int_pin = unsafe { &mut *INT_PIN.as_mut_ptr() };
5656
*int_pin = gpioa.pa7.into_floating_input(&mut gpioa.crl);
5757
int_pin.make_interrupt_source(&mut afio);
58-
int_pin.trigger_on_edge(&p.EXTI, Edge::RisingFalling);
59-
int_pin.enable_interrupt(&p.EXTI);
58+
int_pin.trigger_on_edge(&mut p.EXTI, Edge::RisingFalling);
59+
int_pin.enable_interrupt(&mut p.EXTI);
6060
} // initialization ends here
6161

6262
unsafe {

src/gpio.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ impl Interruptable for Dynamic {}
205205
/// External Interrupt Pin
206206
pub trait ExtiPin {
207207
fn make_interrupt_source(&mut self, afio: &mut afio::Parts);
208-
fn trigger_on_edge(&mut self, exti: &EXTI, level: Edge);
209-
fn enable_interrupt(&mut self, exti: &EXTI);
210-
fn disable_interrupt(&mut self, exti: &EXTI);
208+
fn trigger_on_edge(&mut self, exti: &mut EXTI, level: Edge);
209+
fn enable_interrupt(&mut self, exti: &mut EXTI);
210+
fn disable_interrupt(&mut self, exti: &mut EXTI);
211211
fn clear_interrupt_pending_bit(&mut self);
212-
fn check_interrupt(&mut self) -> bool;
212+
fn check_interrupt(&self) -> bool;
213213
}
214214

215215
impl<PIN> ExtiPin for PIN
@@ -248,7 +248,7 @@ where
248248
}
249249

250250
/// Generate interrupt on rising edge, falling edge or both
251-
fn trigger_on_edge(&mut self, exti: &EXTI, edge: Edge) {
251+
fn trigger_on_edge(&mut self, exti: &mut EXTI, edge: Edge) {
252252
let i = self.pin_id();
253253
match edge {
254254
Edge::Rising => {
@@ -273,13 +273,13 @@ where
273273
}
274274

275275
/// Enable external interrupts from this pin.
276-
fn enable_interrupt(&mut self, exti: &EXTI) {
276+
fn enable_interrupt(&mut self, exti: &mut EXTI) {
277277
exti.imr
278278
.modify(|r, w| unsafe { w.bits(r.bits() | (1 << self.pin_id())) });
279279
}
280280

281281
/// Disable external interrupts from this pin
282-
fn disable_interrupt(&mut self, exti: &EXTI) {
282+
fn disable_interrupt(&mut self, exti: &mut EXTI) {
283283
exti.imr
284284
.modify(|r, w| unsafe { w.bits(r.bits() & !(1 << self.pin_id())) });
285285
}
@@ -290,7 +290,7 @@ where
290290
}
291291

292292
/// Reads the interrupt pending bit for this pin
293-
fn check_interrupt(&mut self) -> bool {
293+
fn check_interrupt(&self) -> bool {
294294
unsafe { ((*EXTI::ptr()).pr.read().bits() & (1 << self.pin_id())) != 0 }
295295
}
296296
}

0 commit comments

Comments
 (0)