use hprint macros

This commit is contained in:
Jorge Aparicio
2018-11-09 23:51:11 +01:00
parent 7e2bec66b7
commit 9c6b290e12
4 changed files with 12 additions and 34 deletions

View File

@@ -17,13 +17,12 @@
extern crate panic_halt; extern crate panic_halt;
use core::alloc::Layout; use core::alloc::Layout;
use core::fmt::Write;
use alloc::vec; use alloc::vec;
use alloc_cortex_m::CortexMHeap; use alloc_cortex_m::CortexMHeap;
use cortex_m::asm; use cortex_m::asm;
use cortex_m_rt::entry; use cortex_m_rt::entry;
use cortex_m_semihosting::hio; use cortex_m_semihosting::hprintln;
// this is the allocator the application will use // this is the allocator the application will use
#[global_allocator] #[global_allocator]
@@ -39,8 +38,7 @@ fn main() -> ! {
// Growable array allocated on the heap // Growable array allocated on the heap
let xs = vec![0, 1, 2]; let xs = vec![0, 1, 2];
let mut stdout = hio::hstdout().unwrap(); hprintln!("{:?}", xs).unwrap();
writeln!(stdout, "{:?}", xs).unwrap();
loop {} loop {}
} }

View File

@@ -27,11 +27,9 @@
#[allow(unused_extern_crates)] #[allow(unused_extern_crates)]
extern crate panic_halt; extern crate panic_halt;
use core::fmt::Write;
use cortex_m::peripheral::syst::SystClkSource; use cortex_m::peripheral::syst::SystClkSource;
use cortex_m_rt::entry; use cortex_m_rt::entry;
use cortex_m_semihosting::hio::{self, HStdout}; use cortex_m_semihosting::hprint;
use stm32f30x::{interrupt, Interrupt}; use stm32f30x::{interrupt, Interrupt};
#[entry] #[entry]
@@ -58,14 +56,8 @@ fn main() -> ! {
} }
// try commenting out this line: you'll end in `default_handler` instead of in `exti0` // try commenting out this line: you'll end in `default_handler` instead of in `exti0`
interrupt!(EXTI0, exti0, state: Option<HStdout> = None); interrupt!(EXTI0, exti0);
fn exti0(state: &mut Option<HStdout>) { fn exti0() {
if state.is_none() { hprint!(".").unwrap();
*state = Some(hio::hstdout().unwrap());
}
if let Some(hstdout) = state.as_mut() {
hstdout.write_str(".").unwrap();
}
} }

View File

@@ -12,12 +12,10 @@
extern crate panic_halt; extern crate panic_halt;
use core::fmt::Write;
use cortex_m::peripheral::syst::SystClkSource; use cortex_m::peripheral::syst::SystClkSource;
use cortex_m::Peripherals; use cortex_m::Peripherals;
use cortex_m_rt::{entry, exception}; use cortex_m_rt::{entry, exception};
use cortex_m_semihosting::hio::{self, HStdout}; use cortex_m_semihosting::hprint;
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
@@ -35,13 +33,5 @@ fn main() -> ! {
#[exception] #[exception]
fn SysTick() { fn SysTick() {
static mut STDOUT: Option<HStdout> = None; hprint!(".").unwrap();
if STDOUT.is_none() {
*STDOUT = Some(hio::hstdout().unwrap());
}
if let Some(hstdout) = STDOUT.as_mut() {
hstdout.write_str(".").unwrap();
}
} }

View File

@@ -5,17 +5,15 @@
extern crate panic_halt; extern crate panic_halt;
use core::fmt::Write;
use cortex_m_rt::entry; use cortex_m_rt::entry;
use cortex_m_semihosting::{debug, hio}; use cortex_m_semihosting::{debug, hprintln};
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
let mut stdout = hio::hstdout().unwrap(); hprintln!("Hello, world!").unwrap();
writeln!(stdout, "Hello, world!").unwrap();
// exit QEMU or the debugger section // exit QEMU
// NOTE do not run this on hardware; it can corrupt OpenOCD state
debug::exit(debug::EXIT_SUCCESS); debug::exit(debug::EXIT_SUCCESS);
loop {} loop {}