mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-02-17 13:58:38 +01:00
![Román Cárdenas Rodríguez](/assets/img/avatar_default.png)
* Rebase to master * using interrupt_mod * bug fixes * fix other backends * Add changelog * forgot about rtic-macros * backend-specific configuration * core peripherals optional over macro argument * pre_init_preprocessing binding * CI for RISC-V (WIP) * separation of concerns * add targets for RISC-V examples * remove qemu feature * prepare examples folder * move examples all together * move ci out of examples * minor changes * add cortex-m * new xtask: proof of concept * fix build.yml * feature typo * clean rtic examples * reproduce weird issue * remove unsafe code in user app * update dependencies * allow builds on riscv32imc * let's fix QEMU * Update .github/workflows/build.yml Co-authored-by: Henrik Tjäder <henrik@tjaders.com> * New build.rs * removing test features * adapt ui test to new version of clippy * add more examples to RISC-V backend * proper configuration of heapless for riscv32imc * opt-out examples for riscv32imc * point to new version of riscv-slic * adapt new macro bindings * adapt examples and CI to stable * fix cortex-m CI * Review --------- Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
26 lines
867 B
Rust
26 lines
867 B
Rust
use super::bindings::{pre_init_checks, pre_init_enable_interrupts};
|
|
use crate::analyze::Analysis;
|
|
use crate::syntax::ast::App;
|
|
use proc_macro2::TokenStream as TokenStream2;
|
|
use quote::quote;
|
|
|
|
/// Generates code that runs before `#[init]`
|
|
pub fn codegen(app: &App, analysis: &Analysis) -> Vec<TokenStream2> {
|
|
let mut stmts = vec![];
|
|
|
|
// Disable interrupts -- `init` must run with interrupts disabled
|
|
stmts.push(quote!(rtic::export::interrupt::disable();));
|
|
|
|
if app.args.core {
|
|
stmts.push(quote!(
|
|
// To set the variable in cortex_m so the peripherals cannot be taken multiple times
|
|
let mut core: rtic::export::Peripherals = rtic::export::Peripherals::steal().into();
|
|
));
|
|
}
|
|
|
|
stmts.append(&mut pre_init_checks(app, analysis));
|
|
|
|
stmts.append(&mut pre_init_enable_interrupts(app, analysis));
|
|
|
|
stmts
|
|
}
|