From 32fc17f0fd073d93e10b2258d34c0a2cf911def9 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Mon, 17 May 2021 21:27:27 +0200 Subject: [PATCH] nrf/gpiote: Allow choosing IRQ priority. --- embassy-nrf/src/gpiote.rs | 3 ++- embassy-nrf/src/lib.rs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/embassy-nrf/src/gpiote.rs b/embassy-nrf/src/gpiote.rs index f322c169..7e0220e7 100644 --- a/embassy-nrf/src/gpiote.rs +++ b/embassy-nrf/src/gpiote.rs @@ -40,7 +40,7 @@ pub enum OutputChannelPolarity { Toggle, } -pub(crate) fn init() { +pub(crate) fn init(irq_prio: crate::interrupt::Priority) { #[cfg(any(feature = "nrf52833", feature = "nrf52840"))] let ports = unsafe { &[&*pac::P0::ptr(), &*pac::P1::ptr()] }; #[cfg(not(any(feature = "nrf52833", feature = "nrf52840")))] @@ -57,6 +57,7 @@ pub(crate) fn init() { let irq = unsafe { interrupt::GPIOTE::steal() }; irq.unpend(); + irq.set_priority(irq_prio); irq.enable(); let g = unsafe { &*pac::GPIOTE::ptr() }; diff --git a/embassy-nrf/src/lib.rs b/embassy-nrf/src/lib.rs index 1c496be1..f3952159 100644 --- a/embassy-nrf/src/lib.rs +++ b/embassy-nrf/src/lib.rs @@ -93,6 +93,7 @@ pub mod config { pub struct Config { pub hfclk_source: HfclkSource, pub lfclk_source: LfclkSource, + pub gpiote_interrupt_priority: crate::interrupt::Priority, } impl Default for Config { @@ -103,6 +104,7 @@ pub mod config { // xtals if they know they have them. hfclk_source: HfclkSource::Internal, lfclk_source: LfclkSource::InternalRC, + gpiote_interrupt_priority: crate::interrupt::Priority::P0, } } } @@ -155,7 +157,7 @@ pub fn init(config: config::Config) -> Peripherals { while r.events_lfclkstarted.read().bits() == 0 {} // Init GPIOTE - crate::gpiote::init(); + crate::gpiote::init(config.gpiote_interrupt_priority); peripherals }