diff options
Diffstat (limited to 'embassy-mcxa/src/interrupt.rs')
| -rw-r--r-- | embassy-mcxa/src/interrupt.rs | 122 |
1 files changed, 119 insertions, 3 deletions
diff --git a/embassy-mcxa/src/interrupt.rs b/embassy-mcxa/src/interrupt.rs index c960af7a2..7eabc6495 100644 --- a/embassy-mcxa/src/interrupt.rs +++ b/embassy-mcxa/src/interrupt.rs | |||
| @@ -9,7 +9,10 @@ | |||
| 9 | mod generated { | 9 | mod generated { |
| 10 | #[rustfmt::skip] | 10 | #[rustfmt::skip] |
| 11 | embassy_hal_internal::interrupt_mod!( | 11 | embassy_hal_internal::interrupt_mod!( |
| 12 | ADC0, | ||
| 12 | ADC1, | 13 | ADC1, |
| 14 | ADC2, | ||
| 15 | ADC3, | ||
| 13 | DMA_CH0, | 16 | DMA_CH0, |
| 14 | DMA_CH1, | 17 | DMA_CH1, |
| 15 | DMA_CH2, | 18 | DMA_CH2, |
| @@ -279,11 +282,48 @@ impl InterruptExt for Rtc { | |||
| 279 | cortex_m::peripheral::NVIC::is_pending(Interrupt::RTC) | 282 | cortex_m::peripheral::NVIC::is_pending(Interrupt::RTC) |
| 280 | } | 283 | } |
| 281 | } | 284 | } |
| 285 | pub struct Adc0; | ||
| 286 | pub const ADC0: Adc0 = Adc0; | ||
| 282 | 287 | ||
| 283 | pub struct Adc; | 288 | impl InterruptExt for Adc0 { |
| 284 | pub const ADC1: Adc = Adc; | 289 | /// Clear any pending ADC0 in NVIC. |
| 290 | #[inline] | ||
| 291 | fn unpend(&self) { | ||
| 292 | cortex_m::peripheral::NVIC::unpend(Interrupt::ADC0); | ||
| 293 | } | ||
| 294 | |||
| 295 | /// Set NVIC priority for ADC0. | ||
| 296 | #[inline] | ||
| 297 | fn set_priority(&self, priority: Priority) { | ||
| 298 | unsafe { | ||
| 299 | let mut nvic = cortex_m::peripheral::Peripherals::steal().NVIC; | ||
| 300 | nvic.set_priority(Interrupt::ADC0, u8::from(priority)); | ||
| 301 | } | ||
| 302 | } | ||
| 285 | 303 | ||
| 286 | impl InterruptExt for Adc { | 304 | /// Enable ADC0 in NVIC. |
| 305 | #[inline] | ||
| 306 | unsafe fn enable(&self) { | ||
| 307 | cortex_m::peripheral::NVIC::unmask(Interrupt::ADC0); | ||
| 308 | } | ||
| 309 | |||
| 310 | /// Disable ADC0 in NVIC. | ||
| 311 | #[inline] | ||
| 312 | unsafe fn disable(&self) { | ||
| 313 | cortex_m::peripheral::NVIC::mask(Interrupt::ADC0); | ||
| 314 | } | ||
| 315 | |||
| 316 | /// Check if ADC0 is pending in NVIC. | ||
| 317 | #[inline] | ||
| 318 | fn is_pending(&self) -> bool { | ||
| 319 | cortex_m::peripheral::NVIC::is_pending(Interrupt::ADC0) | ||
| 320 | } | ||
| 321 | } | ||
| 322 | |||
| 323 | pub struct Adc1; | ||
| 324 | pub const ADC1: Adc1 = Adc1; | ||
| 325 | |||
| 326 | impl InterruptExt for Adc1 { | ||
| 287 | /// Clear any pending ADC1 in NVIC. | 327 | /// Clear any pending ADC1 in NVIC. |
| 288 | #[inline] | 328 | #[inline] |
| 289 | fn unpend(&self) { | 329 | fn unpend(&self) { |
| @@ -318,6 +358,82 @@ impl InterruptExt for Adc { | |||
| 318 | } | 358 | } |
| 319 | } | 359 | } |
| 320 | 360 | ||
| 361 | pub struct Adc2; | ||
| 362 | pub const ADC2: Adc2 = Adc2; | ||
| 363 | |||
| 364 | impl InterruptExt for Adc2 { | ||
| 365 | /// Clear any pending ADC2 in NVIC. | ||
| 366 | #[inline] | ||
| 367 | fn unpend(&self) { | ||
| 368 | cortex_m::peripheral::NVIC::unpend(Interrupt::ADC2); | ||
| 369 | } | ||
| 370 | |||
| 371 | /// Set NVIC priority for ADC2. | ||
| 372 | #[inline] | ||
| 373 | fn set_priority(&self, priority: Priority) { | ||
| 374 | unsafe { | ||
| 375 | let mut nvic = cortex_m::peripheral::Peripherals::steal().NVIC; | ||
| 376 | nvic.set_priority(Interrupt::ADC2, u8::from(priority)); | ||
| 377 | } | ||
| 378 | } | ||
| 379 | |||
| 380 | /// Enable ADC2 in NVIC. | ||
| 381 | #[inline] | ||
| 382 | unsafe fn enable(&self) { | ||
| 383 | cortex_m::peripheral::NVIC::unmask(Interrupt::ADC2); | ||
| 384 | } | ||
| 385 | |||
| 386 | /// Disable ADC2 in NVIC. | ||
| 387 | #[inline] | ||
| 388 | unsafe fn disable(&self) { | ||
| 389 | cortex_m::peripheral::NVIC::mask(Interrupt::ADC2); | ||
| 390 | } | ||
| 391 | |||
| 392 | /// Check if ADC2 is pending in NVIC. | ||
| 393 | #[inline] | ||
| 394 | fn is_pending(&self) -> bool { | ||
| 395 | cortex_m::peripheral::NVIC::is_pending(Interrupt::ADC2) | ||
| 396 | } | ||
| 397 | } | ||
| 398 | |||
| 399 | pub struct Adc3; | ||
| 400 | pub const ADC3: Adc3 = Adc3; | ||
| 401 | |||
| 402 | impl InterruptExt for Adc3 { | ||
| 403 | /// Clear any pending ADC3 in NVIC. | ||
| 404 | #[inline] | ||
| 405 | fn unpend(&self) { | ||
| 406 | cortex_m::peripheral::NVIC::unpend(Interrupt::ADC3); | ||
| 407 | } | ||
| 408 | |||
| 409 | /// Set NVIC priority for ADC3. | ||
| 410 | #[inline] | ||
| 411 | fn set_priority(&self, priority: Priority) { | ||
| 412 | unsafe { | ||
| 413 | let mut nvic = cortex_m::peripheral::Peripherals::steal().NVIC; | ||
| 414 | nvic.set_priority(Interrupt::ADC3, u8::from(priority)); | ||
| 415 | } | ||
| 416 | } | ||
| 417 | |||
| 418 | /// Enable ADC3 in NVIC. | ||
| 419 | #[inline] | ||
| 420 | unsafe fn enable(&self) { | ||
| 421 | cortex_m::peripheral::NVIC::unmask(Interrupt::ADC3); | ||
| 422 | } | ||
| 423 | |||
| 424 | /// Disable ADC3 in NVIC. | ||
| 425 | #[inline] | ||
| 426 | unsafe fn disable(&self) { | ||
| 427 | cortex_m::peripheral::NVIC::mask(Interrupt::ADC3); | ||
| 428 | } | ||
| 429 | |||
| 430 | /// Check if ADC3 is pending in NVIC. | ||
| 431 | #[inline] | ||
| 432 | fn is_pending(&self) -> bool { | ||
| 433 | cortex_m::peripheral::NVIC::is_pending(Interrupt::ADC3) | ||
| 434 | } | ||
| 435 | } | ||
| 436 | |||
| 321 | pub struct Gpio0; | 437 | pub struct Gpio0; |
| 322 | pub const GPIO0: Gpio0 = Gpio0; | 438 | pub const GPIO0: Gpio0 = Gpio0; |
| 323 | 439 | ||
