Add a UART example
It uses the legacy module, but some more work will be required to have a high-level UART interface based on the ruduino::Register trait.
This commit is contained in:
parent
65c363509c
commit
871e7a6573
|
@ -0,0 +1,31 @@
|
||||||
|
#![no_std]
|
||||||
|
#![no_main]
|
||||||
|
|
||||||
|
//! Serial port example.
|
||||||
|
//!
|
||||||
|
//! The output is viewable with simavr
|
||||||
|
//!
|
||||||
|
//! ```
|
||||||
|
//! cargo build -Z build-std=core --target avr-atmega328p.json --examples --release
|
||||||
|
//! simavr -m atmega328p target/avr-atmega328p/release/examples/uart.elf
|
||||||
|
//! ```
|
||||||
|
|
||||||
|
use ruduino::legacy::serial;
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
fn main() {
|
||||||
|
const CPU_FREQUENCY_HZ: u64 = 16_000_000;
|
||||||
|
const BAUD: u64 = 9600;
|
||||||
|
const UBRR: u16 = (CPU_FREQUENCY_HZ / 16 / BAUD - 1) as u16;
|
||||||
|
|
||||||
|
serial::Serial::new(UBRR)
|
||||||
|
.character_size(serial::CharacterSize::EightBits)
|
||||||
|
.mode(serial::Mode::Asynchronous)
|
||||||
|
.parity(serial::Parity::Disabled)
|
||||||
|
.stop_bits(serial::StopBits::OneBit)
|
||||||
|
.configure();
|
||||||
|
|
||||||
|
for &b in b"Hello, from Rust!\n" {
|
||||||
|
serial::transmit(b);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue