hal working
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
use std::env;
|
// build.rs
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@@ -7,9 +8,9 @@ fn main() {
|
|||||||
let hal_driver = cube_path.join("Drivers/STM32U5xx_HAL_Driver");
|
let hal_driver = cube_path.join("Drivers/STM32U5xx_HAL_Driver");
|
||||||
let cmsis = cube_path.join("Drivers/CMSIS");
|
let cmsis = cube_path.join("Drivers/CMSIS");
|
||||||
let device = cmsis.join("Device/ST/STM32U5xx");
|
let device = cmsis.join("Device/ST/STM32U5xx");
|
||||||
|
|
||||||
let example_inc = cube_path.join("Projects/NUCLEO-U575ZI-Q/Examples/GPIO/GPIO_IOToggle/Inc");
|
let example_inc = cube_path.join("Projects/NUCLEO-U575ZI-Q/Examples/GPIO/GPIO_IOToggle/Inc");
|
||||||
|
|
||||||
|
// HAL source files
|
||||||
let hal_srcs = [
|
let hal_srcs = [
|
||||||
"stm32u5xx_hal.c",
|
"stm32u5xx_hal.c",
|
||||||
"stm32u5xx_hal_rcc.c",
|
"stm32u5xx_hal_rcc.c",
|
||||||
@@ -27,6 +28,9 @@ fn main() {
|
|||||||
];
|
];
|
||||||
|
|
||||||
let mut build = cc::Build::new();
|
let mut build = cc::Build::new();
|
||||||
|
|
||||||
|
// system_stm32u5xx.c adds SystemCoreClock, tables, etc.
|
||||||
|
build.file(device.join("Source/Templates/system_stm32u5xx.c"));
|
||||||
for src in hal_srcs {
|
for src in hal_srcs {
|
||||||
build.file(hal_driver.join("Src").join(src));
|
build.file(hal_driver.join("Src").join(src));
|
||||||
}
|
}
|
||||||
@@ -38,7 +42,6 @@ fn main() {
|
|||||||
.include(&example_inc)
|
.include(&example_inc)
|
||||||
.define("USE_HAL_DRIVER", None)
|
.define("USE_HAL_DRIVER", None)
|
||||||
.define("STM32U575xx", None)
|
.define("STM32U575xx", None)
|
||||||
// flags
|
|
||||||
.flag("-mthumb")
|
.flag("-mthumb")
|
||||||
.flag("-march=armv8-m.main+fp.dp")
|
.flag("-march=armv8-m.main+fp.dp")
|
||||||
.flag("-mfloat-abi=hard")
|
.flag("-mfloat-abi=hard")
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ bind_interrupts!(struct Irqs {
|
|||||||
USART1 => BufferedInterruptHandler<peripherals::USART1>;
|
USART1 => BufferedInterruptHandler<peripherals::USART1>;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
unsafe extern "C" {
|
||||||
|
fn HAL_Init();
|
||||||
|
fn HAL_PWR_EnterSTANDBYMode();
|
||||||
|
fn HAL_PWREx_EnterSHUTDOWNMode();
|
||||||
|
}
|
||||||
|
|
||||||
#[embassy_executor::main]
|
#[embassy_executor::main]
|
||||||
async fn main(spawner: Spawner) {
|
async fn main(spawner: Spawner) {
|
||||||
info!("boot");
|
info!("boot");
|
||||||
@@ -44,11 +50,19 @@ async fn main(spawner: Spawner) {
|
|||||||
spawner.spawn(uart_task(uart, &PIPE_HW_TX, &PIPE_HW_RX).unwrap());
|
spawner.spawn(uart_task(uart, &PIPE_HW_TX, &PIPE_HW_RX).unwrap());
|
||||||
// END OF HARDWARE UART to the PC
|
// END OF HARDWARE UART to the PC
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
HAL_Init();
|
||||||
|
HAL_PWR_EnterSTANDBYMode();
|
||||||
|
|
||||||
|
// Example 2 (unreachable if above executes): enter Shutdown
|
||||||
|
// HAL_PWREx_EnterSHUTDOWNMode();
|
||||||
|
}
|
||||||
loop {
|
loop {
|
||||||
info!("tick start");
|
info!("tick start");
|
||||||
// Timer::after(Duration::from_millis(100)).await;
|
// Timer::after(Duration::from_millis(100)).await;
|
||||||
// info!("tick end");
|
// info!("tick end");
|
||||||
|
|
||||||
|
|
||||||
yield_now().await;
|
yield_now().await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user