forked from BluePill_Rust/blue_pill_base
Add cargo embed support, including rtt printing & panic logs
parent
52da592ec1
commit
0291bf41d2
|
@ -19,6 +19,7 @@ panic-halt = "0.2.0"
|
|||
#panic-persist = "0.2.1"
|
||||
embedded-hal = "0.2.3"
|
||||
nb = "0.1.2"
|
||||
rtt-target = { version = "0.2.0", features = ["cortex-m"] }
|
||||
|
||||
[dependencies.stm32f1]
|
||||
version = "0.10.0"
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
[default.probe]
|
||||
# USB vendor ID
|
||||
# usb_vid = "1337"
|
||||
# USB product ID
|
||||
# usb_pid = "1337"
|
||||
# Serial number
|
||||
# serial = "12345678"
|
||||
# The protocol to be used for communicating with the target.
|
||||
protocol = "Swd"
|
||||
# The speed in kHz of the data link to the target.
|
||||
# speed = 1337
|
||||
|
||||
[default.flashing]
|
||||
# Whether or not the target should be flashed.
|
||||
enabled = true
|
||||
# Whether or not the target should be halted after flashing.
|
||||
halt_afterwards = false
|
||||
# Whether or not bytes erased but not rewritten with data from the ELF
|
||||
# should be restored with their contents before erasing.
|
||||
restore_unwritten_bytes = false
|
||||
# The path where an SVG of the assembled flash layout should be written to.
|
||||
# flash_layout_output_path = "out.svg"
|
||||
|
||||
[default.general]
|
||||
# The chip name of the chip to be debugged.
|
||||
chip = "stm32f103C8"
|
||||
# A list of chip descriptions to be loaded during runtime.
|
||||
chip_descriptions = []
|
||||
# The default log level to be used.
|
||||
log_level = "Warn"
|
||||
|
||||
[default.rtt]
|
||||
# Whether or not an RTTUI should be opened after flashing.
|
||||
# This is exclusive and cannot be used with GDB at the moment.
|
||||
enabled = true
|
||||
# A list of channel associations to be displayed. If left empty, all channels are displayed.
|
||||
channels = [
|
||||
# { up = 0, down = 0, name = "name" }
|
||||
]
|
||||
# The duration in ms for which the logger should retry to attach to RTT.
|
||||
timeout = 3000
|
||||
# Whether timestamps in the RTTUI are enabled
|
||||
show_timestamps = true
|
||||
|
||||
[default.gdb]
|
||||
# Whether or not a GDB server should be opened after flashing.
|
||||
# This is exclusive and cannot be used with RTT at the moment.
|
||||
enabled = false
|
||||
# The connection string in host:port format wher the GDB server will open a socket.
|
||||
# gdb_connection_string
|
20
src/main.rs
20
src/main.rs
|
@ -9,7 +9,9 @@
|
|||
#![no_std]
|
||||
#![no_main]
|
||||
|
||||
use panic_halt as _;
|
||||
//use panic_halt as _;
|
||||
use core::panic::PanicInfo;
|
||||
use rtt_target::{rprintln, rtt_init_print};
|
||||
|
||||
use nb::block;
|
||||
|
||||
|
@ -23,6 +25,8 @@ use embedded_hal::digital::v2::OutputPin;
|
|||
|
||||
#[entry]
|
||||
fn main() -> ! {
|
||||
// Init buffers for debug printing
|
||||
rtt_init_print!();
|
||||
// Get access to the core peripherals from the cortex-m crate
|
||||
let cp = cortex_m::Peripherals::take().unwrap();
|
||||
// Get access to the device specific peripherals from the peripheral access crate
|
||||
|
@ -46,11 +50,25 @@ fn main() -> ! {
|
|||
// Configure the syst timer to trigger an update every second
|
||||
let mut timer = Timer::syst(cp.SYST, &clocks).start_count_down(1.hz());
|
||||
|
||||
rprintln!("Hello, Rust!");
|
||||
// Wait for the timer to trigger an update and change the state of the LED
|
||||
let mut i = 0;
|
||||
loop {
|
||||
block!(timer.wait()).unwrap();
|
||||
led.set_high().unwrap();
|
||||
block!(timer.wait()).unwrap();
|
||||
led.set_low().unwrap();
|
||||
i += 1;
|
||||
rprintln!("Hello again; I have blinked {} times.", i);
|
||||
if i == 10 {
|
||||
panic!("Yow, 10 times is enough!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
#[panic_handler]
|
||||
fn panic(info: &PanicInfo) -> ! {
|
||||
rprintln!("{}", info);
|
||||
loop {} // You might need a compiler fence in here.
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue