diff options
Diffstat (limited to 'embassy-macros/src')
| -rw-r--r-- | embassy-macros/src/chip/nrf.rs | 1 | ||||
| -rw-r--r-- | embassy-macros/src/chip/rp.rs | 16 | ||||
| -rw-r--r-- | embassy-macros/src/chip/stm32.rs | 1 | ||||
| -rw-r--r-- | embassy-macros/src/lib.rs | 13 |
4 files changed, 26 insertions, 5 deletions
diff --git a/embassy-macros/src/chip/nrf.rs b/embassy-macros/src/chip/nrf.rs index d89223415..b2d1c322f 100644 --- a/embassy-macros/src/chip/nrf.rs +++ b/embassy-macros/src/chip/nrf.rs | |||
| @@ -58,5 +58,6 @@ pub fn generate(args: Args) -> TokenStream { | |||
| 58 | unsafe { embassy::time::set_clock(rtc) }; | 58 | unsafe { embassy::time::set_clock(rtc) }; |
| 59 | 59 | ||
| 60 | let alarm = unsafe { make_static(&mut alarm) }; | 60 | let alarm = unsafe { make_static(&mut alarm) }; |
| 61 | executor.set_alarm(alarm); | ||
| 61 | ) | 62 | ) |
| 62 | } | 63 | } |
diff --git a/embassy-macros/src/chip/rp.rs b/embassy-macros/src/chip/rp.rs new file mode 100644 index 000000000..25c6705cd --- /dev/null +++ b/embassy-macros/src/chip/rp.rs | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | use darling::FromMeta; | ||
| 2 | use proc_macro2::TokenStream; | ||
| 3 | use quote::{format_ident, quote}; | ||
| 4 | use syn::spanned::Spanned; | ||
| 5 | |||
| 6 | #[derive(Debug, FromMeta)] | ||
| 7 | pub struct Args {} | ||
| 8 | |||
| 9 | pub fn generate(args: Args) -> TokenStream { | ||
| 10 | quote!( | ||
| 11 | use embassy_rp::{interrupt, peripherals}; | ||
| 12 | |||
| 13 | let mut config = embassy_rp::system::Config::default(); | ||
| 14 | unsafe { embassy_rp::system::configure(config) }; | ||
| 15 | ) | ||
| 16 | } | ||
diff --git a/embassy-macros/src/chip/stm32.rs b/embassy-macros/src/chip/stm32.rs index e94c21a97..2476a9623 100644 --- a/embassy-macros/src/chip/stm32.rs +++ b/embassy-macros/src/chip/stm32.rs | |||
| @@ -53,5 +53,6 @@ pub fn generate(args: Args) -> TokenStream { | |||
| 53 | unsafe { embassy::time::set_clock(rtc) }; | 53 | unsafe { embassy::time::set_clock(rtc) }; |
| 54 | 54 | ||
| 55 | let alarm = unsafe { make_static(&mut alarm) }; | 55 | let alarm = unsafe { make_static(&mut alarm) }; |
| 56 | executor.set_alarm(alarm); | ||
| 56 | ) | 57 | ) |
| 57 | } | 58 | } |
diff --git a/embassy-macros/src/lib.rs b/embassy-macros/src/lib.rs index 145714f22..72f0b0eca 100644 --- a/embassy-macros/src/lib.rs +++ b/embassy-macros/src/lib.rs | |||
| @@ -125,7 +125,7 @@ pub fn interrupt_declare(item: TokenStream) -> TokenStream { | |||
| 125 | type Priority = crate::interrupt::Priority; | 125 | type Priority = crate::interrupt::Priority; |
| 126 | fn number(&self) -> u16 { | 126 | fn number(&self) -> u16 { |
| 127 | use cortex_m::interrupt::InterruptNumber; | 127 | use cortex_m::interrupt::InterruptNumber; |
| 128 | let irq = crate::pac::interrupt::#name; | 128 | let irq = crate::pac::Interrupt::#name; |
| 129 | irq.number() as u16 | 129 | irq.number() as u16 |
| 130 | } | 130 | } |
| 131 | unsafe fn steal() -> Self { | 131 | unsafe fn steal() -> Self { |
| @@ -199,7 +199,11 @@ mod chip; | |||
| 199 | #[path = "chip/stm32.rs"] | 199 | #[path = "chip/stm32.rs"] |
| 200 | mod chip; | 200 | mod chip; |
| 201 | 201 | ||
| 202 | #[cfg(any(feature = "nrf", feature = "stm32"))] | 202 | #[cfg(feature = "rp")] |
| 203 | #[path = "chip/rp.rs"] | ||
| 204 | mod chip; | ||
| 205 | |||
| 206 | #[cfg(any(feature = "nrf", feature = "stm32", feature = "rp"))] | ||
| 203 | #[proc_macro_attribute] | 207 | #[proc_macro_attribute] |
| 204 | pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { | 208 | pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { |
| 205 | let macro_args = syn::parse_macro_input!(args as syn::AttributeArgs); | 209 | let macro_args = syn::parse_macro_input!(args as syn::AttributeArgs); |
| @@ -267,11 +271,10 @@ pub fn main(args: TokenStream, item: TokenStream) -> TokenStream { | |||
| 267 | ::core::mem::transmute(t) | 271 | ::core::mem::transmute(t) |
| 268 | } | 272 | } |
| 269 | 273 | ||
| 270 | #chip_setup | ||
| 271 | |||
| 272 | let mut executor = ::embassy::executor::Executor::new(); | 274 | let mut executor = ::embassy::executor::Executor::new(); |
| 273 | let executor = unsafe { make_static(&mut executor) }; | 275 | let executor = unsafe { make_static(&mut executor) }; |
| 274 | executor.set_alarm(alarm); | 276 | |
| 277 | #chip_setup | ||
| 275 | 278 | ||
| 276 | executor.run(|spawner| { | 279 | executor.run(|spawner| { |
| 277 | spawner.spawn(__embassy_main(spawner)).unwrap(); | 280 | spawner.spawn(__embassy_main(spawner)).unwrap(); |
