Module esp32_hal::cpu_control
source · Expand description
§Control CPU Cores (ESP32)
§Overview
This module provides essential functionality for controlling
and managing the APP (second) CPU core on the ESP32
chip. It is used to
start and stop program execution on the APP core.
§Example
static mut APP_CORE_STACK: Stack<8192> = Stack::new();
let counter = Mutex::new(RefCell::new(0));
let mut cpu_control = CpuControl::new(system.cpu_control);
let cpu1_fnctn = || {
cpu1_task(&mut timer1, &counter);
};
let _guard = cpu_control
.start_app_core(unsafe { &mut APP_CORE_STACK }, cpu1_fnctn)
.unwrap();
loop {
block!(timer0.wait()).unwrap();
let count = critical_section::with(|cs| *counter.borrow_ref(cs));
println!("Hello World - Core 0! Counter is {}", count);
}
Where cpu1_task()
may be defined as:
fn cpu1_task(
timer: &mut Timer<Timer0<TIMG1>>,
counter: &critical_section::Mutex<RefCell<i32>>,
) -> ! {
println!("Hello World - Core 1!");
loop {
block!(timer.wait()).unwrap();
critical_section::with(|cs| {
let new_val = counter.borrow_ref_mut(cs).wrapping_add(1);
*counter.borrow_ref_mut(cs) = new_val;
});
}
}
Structs§
- Will park the APP (second) core when dropped
- Control CPU Cores
- Data type for a properly aligned stack of N bytes