Merge pull request #364 from embassy-rs/nrf-time-irq-prio
nrf/time: allow configuring the rtc irq prio
This commit is contained in:
		
						commit
						c0fb534a00
					
				| @ -99,6 +99,7 @@ pub mod config { | |||||||
|         pub hfclk_source: HfclkSource, |         pub hfclk_source: HfclkSource, | ||||||
|         pub lfclk_source: LfclkSource, |         pub lfclk_source: LfclkSource, | ||||||
|         pub gpiote_interrupt_priority: crate::interrupt::Priority, |         pub gpiote_interrupt_priority: crate::interrupt::Priority, | ||||||
|  |         pub time_interrupt_priority: crate::interrupt::Priority, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     impl Default for Config { |     impl Default for Config { | ||||||
| @ -110,6 +111,7 @@ pub mod config { | |||||||
|                 hfclk_source: HfclkSource::Internal, |                 hfclk_source: HfclkSource::Internal, | ||||||
|                 lfclk_source: LfclkSource::InternalRC, |                 lfclk_source: LfclkSource::InternalRC, | ||||||
|                 gpiote_interrupt_priority: crate::interrupt::Priority::P0, |                 gpiote_interrupt_priority: crate::interrupt::Priority::P0, | ||||||
|  |                 time_interrupt_priority: crate::interrupt::Priority::P0, | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -165,7 +167,7 @@ pub fn init(config: config::Config) -> Peripherals { | |||||||
|     gpiote::init(config.gpiote_interrupt_priority); |     gpiote::init(config.gpiote_interrupt_priority); | ||||||
| 
 | 
 | ||||||
|     // init RTC time driver
 |     // init RTC time driver
 | ||||||
|     time_driver::init(); |     time_driver::init(config.time_interrupt_priority); | ||||||
| 
 | 
 | ||||||
|     peripherals |     peripherals | ||||||
| } | } | ||||||
|  | |||||||
| @ -98,7 +98,7 @@ static STATE: State = State { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| impl State { | impl State { | ||||||
|     fn init(&'static self) { |     fn init(&'static self, irq_prio: crate::interrupt::Priority) { | ||||||
|         let r = rtc(); |         let r = rtc(); | ||||||
|         r.cc[3].write(|w| unsafe { w.bits(0x800000) }); |         r.cc[3].write(|w| unsafe { w.bits(0x800000) }); | ||||||
| 
 | 
 | ||||||
| @ -114,7 +114,9 @@ impl State { | |||||||
|         // Wait for clear
 |         // Wait for clear
 | ||||||
|         while r.counter.read().bits() != 0 {} |         while r.counter.read().bits() != 0 {} | ||||||
| 
 | 
 | ||||||
|         unsafe { interrupt::RTC1::steal() }.enable(); |         let irq = unsafe { interrupt::RTC1::steal() }; | ||||||
|  |         irq.set_priority(irq_prio); | ||||||
|  |         irq.enable(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn on_interrupt(&self) { |     fn on_interrupt(&self) { | ||||||
| @ -287,6 +289,6 @@ fn RTC1() { | |||||||
|     STATE.on_interrupt() |     STATE.on_interrupt() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub(crate) fn init() { | pub(crate) fn init(irq_prio: crate::interrupt::Priority) { | ||||||
|     STATE.init() |     STATE.init(irq_prio) | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user